所以我試圖使用MVC 4互聯網應用程序模板和UserProfile
數據庫表爲它創建帳戶,然後添加表具有依賴於UserProfile
表格以獲取更多信息。實體框架codefirst issue無法確定類型之間的關聯主體端
該模型將UserProfile 0 ---> 1 UserType1 and UserProfile 0 ----> UserType2
在USERPROFILE表可能有UserType1
依賴紀錄,可能有相關紀錄UserType2
,如果有任一UserType1
或UserType2
一個條目的主鍵是一個外鍵是UserId
從用戶配置文件
的POCO是:
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string Email { get; set; }
public string UserName { get; set; }
public int type { get; set; }
public virtual UserType1 UserType1 { get; set; }
public virtual UserType2 UserType2 { get; set; }
public class UserType1
{
[key,ForeignKey("UserProfile")]
public virtual int UserId {get;set;}
public int myval {get;set;}
public UserProfile UserProfile {get; set;}
}
public class UserType2 //same as usertype 1
我試着將模型映射語句,但無濟於事
個爲用戶配置模型映射數據:
public class UserProfileMap : EntityTypeConfiguration<UserProfile>
{
public UserProfileMap()
{
// Primary Key
this.HasKey(t => t.UserId);
// Properties
this.Property(t => t.Email)
.IsRequired()
.HasMaxLength(56);
this.Property(t => t.UserName)
.IsRequired()
.HasMaxLength(50);
// Table & Column Mappings
this.ToTable("UserProfile");
this.Property(t => t.UserId).HasColumnName("UserId");
this.Property(t => t.Email).HasColumnName("Email");
this.Property(t => t.UserName).HasColumnName("UserName");
this.Property(t => t.UserType).HasColumnName("UserType");
this.HasOptional(e => e.UserType1).WithRequired();
爲usertypes模型映射的數據是這樣的:
public class UserType1 : EntityTypeConfiguration<UserType1>
{
public UserType1Map()
{
// Primary Key
this.HasKey(t => t.UserId);
// Properties
this.Property(t => t.UserId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
this.HasRequired(t => t.UserProfile).WithOptional();
this.Property(t => t.Company)
.IsRequired()
.HasMaxLength(50);
// Table & Column Mappings
this.ToTable("UserType1");
this.Property(t => t.UserId).HasColumnName("UserId");
this.Property(t => t.Company).HasColumnName("Company");
// Relationships
this.HasRequired(t => t.UserProfile).WithOptional();
}
}
但我總是得到這個錯誤無法確定之間的關聯的主要終點類型'myApp.Models.UserType1'和'myApp.Models.UserProfile'。該關聯的主要目的必須使用關係流暢API或數據註釋來顯式配置。
我錯過了什麼?
謝謝!我必須從你提供的內容中做出一點小改變。實體框架不喜歡SharedKeyOptionalClass上沒有外鍵的事實。我使用數據符號並在sko中爲int值添加了[Key,ForeignKey(「SharedKeyRequired」)]。 – Himilou