我有这两个模型:
public partial class Account
{
public Account() {}
public Guid Id { get; set; }
// ...
public virtual Customer Customer { get; set; }
}
和
public partial class Customer
{
public Customer() {}
public Guid Id { get; set; }
public Guid AccountId { get; set; }
// ...
public virtual Account Account { get; set; }
}
如何在帐户中设置(使用流利的)可选的Customer实体,而不包含可空的CustomerId?
** Customer表上的AccountId是一个唯一的密钥。
答案 0 :(得分:0)
应该是这样的:
modelBuilder.Entity<Account>()
.HasKey(t => t.Id);
modelBuilder.Entity<Account>()
.HasOptional(t => t.Customer)
.WithRequired(t => t.Account);
请让Ids不可空。主键不应该设计为null。
参考:http://msdn.microsoft.com/en-us/data/jj591620.aspx#RequiredToOptional
答案 1 :(得分:0)
已解决从客户中删除AccountId并使用其ID作为相应帐户的外键。
答案 2 :(得分:0)
像这样设置模型:
public class Account
{
[Key]
public long ID { get; set; }
public virtual Customer Customer { get; set; }
}
public class Customer
{
[Key]
public long AccountID { get; set; }
[ForeignKey("AccountID")]
public virtual Account Account { get; set; }
}
然后连接这样的模型:
modelBuilder.Entity<Account>()
.HasOptional(x => x.Customer)
.WithRequired(x => x.Account);
请注意Customer主键也是外键。这是因为您的实体关系图如下所示:
客户实体是weak entity (link),依赖于(强)帐户实体。