2013-06-19 59 views
0

在我的领域模型中,这个模型的大小适中 - 大约有20个生成的表格 - 只有一个关系,实体框架没有映射,我不知道为什么。这是AccountRecordAccount之间的关系(1-1)。 Account是指具有用户的账户。EF没有为外键创建列

的类是这样的:

public class Account 
{ 
    int ID { get; set; } 
    /* snip */ 
    AccountRecord Record { get; set; } 
} 

public class AccountRecord 
{ 
    int ID { get; set; } 
    Account Account { get; set; } 
    /* snip */ 
} 

的映射定义如下:

public AccountConfiguration() 
    { 
     // Table name and primary key 
     ToTable("Accounts"); 
     HasKey(x => x.ID); 
     Property(x => x.ID) 
      .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity) 
      .HasColumnName("AccountId"); 

     HasOptional(x => x.AccountRecord).WithRequired(x => x.Account); 
    } 

    public AccountRecordConfiguration() 
    { 
     // Table name and primary key 
     ToTable("AccountRecords"); 
     HasKey(x => x.ID); 
     Property(x => x.ID) 
      .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity) 
      .HasColumnName("AccountRecordId"); 

     HasRequired(x => x.Account).WithOptional(x => x.AccountRecord); 
    } 

其他所有列的两个实体正在创建,只是没有这一个。当我尝试为某个帐户设置帐户记录时,我得到以下内容:A dependent property in a ReferentialConstraint is mapped to a store-generated column

回答

0

我刚刚发现了这一点,认为如果有人发现此Google搜索,我会提供答案。

EF未创建列,而是将AccountRecordId上的外键放置到Accounts表中,因为存在1-1关系。解决方案是从帐户记录PK中删除DatabaseGeneratedOption.Identity

+0

OP已经在这里完成了这项操作'.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity) .HasColumnName(“AccountRecordId”);' –