我有一个Customer实体,它引用了一组地址.这里的复杂性是我希望能够将特定地址识别为默认地址.
如果可能的话,我想在Customer表中保存默认地址的FK.这似乎比在地址表中有一列来识别默认值更优雅.
在定义这种关系方面,我在使用流畅的API方面遇到了困难.当我运行以下代码时,我得到一个异常,其中说: "保存未公开其关系的外键属性的实体时发生错误.EntityEntries属性将返回null,因为无法将单个实体标识为异常的来源通过在实体类型中公开外键属性,可以更容易地在保存时处理异常.有关详细信息,请参阅InnerException."无法确定依赖操作的有效排序.由于外键约束,模型要求或存储生成的值,可能存在依赖关系."
我创建了一个控制台应用程序来显示确切的问题.在这个测试应用程序中,我有一个Customer实体,一个Address和flient api配置.
任何帮助将非常感激:
using System;
using System.Collections.Generic;
using System.Data.Entity.ModelConfiguration;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;
namespace OneToManyWithDefault
{
public class Customer
{
private ICollection<Address> m_Addresses;
public Customer()
{
Addresses = new List<Address>();
}
public int Id { get; set; }
public string CompanyName { get; set; }
public virtual ICollection<Address> Addresses
{
get
{
if (m_Addresses == null)
{
m_Addresses = new List<Address>();
}
return m_Addresses;
}
set
{
m_Addresses = value;
}
}
public Address DefaultAddress { …
Run Code Online (Sandbox Code Playgroud)