2

我在Visual Studio Community 2015中創建了一個ASP.Net MVC項目,我必須讓用戶創建和管理廣告。這是一對多的關係,這意味着用戶可以根據自己的喜好創建儘可能多的廣告。每個用戶都可以看到所有廣告,但只有創建它們的廣告才能編輯它們。由於MVC模板已經實現了Identity,我想使用ApplicationUser類作爲我的用戶類。ASP.Net MVC如何在ApplicationUser和我自己的類之間創建一個一對多的關係?

我添加了一個類Avertisement到我的模型文件夾,看起來像這樣:

public class Advertisement 
{ 
    public int AdvertisementId { get; set; } 
    public string Description { get; set; } 

    public string ApplicationUserID { get; set; } 
    public virtual ApplicationUser ApplicationUser { get; set; } 
} 

然後,我添加了廣告DbSet到ApplicationDbContext類:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext() : base("DefaultConnection", throwIfV1Schema: false) {} 

    public DbSet<Advertisement> Advertisements { get; set; } 

    public static ApplicationDbContext Create() 
    { 
     return new ApplicationDbContext(); 
    } 
} 

之後,我能遷移和重建解決方案:

Enable-Migrations 
add-migrations InitialCreate 
update-database 

直到這一點一切ru順利。現在出現我的問題。我現在通過在「MVC 5 Controller with views,using Entity Framework」模板中添加一個Advertisement控制器來試用腳手架,但是生成的控制器隨附了以下error,每次db.ApplicationUsers出現在控制器上時都會出現。我不知道我在做什麼錯誤,並且我在無處不在的stackoverflow和互聯網上,但沒有任何解決方案爲我工作。你認爲什麼可能是錯的?

1

+0

什麼是你的控制器中'db'的類型? – JamieD77

+0

這是控制器腳手架自帶的默認值:private ApplicationDbContext db = new ApplicationDbContext(); –

+0

作爲文本共享實際的錯誤信息比單擊屏幕截圖更有用。 – Jasen

回答

1

首先,你需要添加ApplicationUserAdvertisment之間的聯繫,找到ApplicationUser類,並補充一點:

public class ApplicationUser : IdentityUser 
{ 
    // Add this line 
    // vvvvvvvvvvvvv 
    public virtual ICollection<Advertisment> Advertisments { get; set; } 
} 

在你的操作方法,您可以訪問用戶使用此:

db.Users 
+0

謝謝,用db.Users替換它的工作!我想我的問題是,我要相信腳手架的能力,而自動多元化會毀了它。關於你的第一個建議,是不是隻能在一個一對多關係中的一個類中有鏈接? –

0

ApplicationUser就是一個類標識爲您創建。 Identity存儲用戶數據的實際表格爲AspNetUsers,因此

db.AspNetUsers 

應該適合您。

+0

它不起作用。同樣的錯誤出現,但現在與AspNetUsers。 –

相關問題