我继承了数据库,我需要使用EF6插入数据。我收到错误:
[ForeignKey("KitMemberSaleReturnRaw")]
public virtual KitMemberSaleReturnRaw KitMemberSaleReturnRaw { get; set; }
[ForeignKey("KitMemberKitMemberSaleReturnRaw")]
public virtual KitMemberKitMemberSaleReturnRaw KitMemberKitMemberSaleReturnRaw { get; set; }
我使用DataContractSerializer将XML反序列化为POCO对象。 我正在使用xml文档结构中的对象引用来定义关系。 POCO对象是使用NuGet包提供的t4脚本生成的(根本不能与反序列化器一起使用!)
我像这样装饰了KitMemberTaxRaw:
BasicDataSource ds = new BasicDataSource();
ds.setUsername(user);
ds.setPassword(getPassword());
ds.setUrl(jdbcUrl);
ds.setDriverClassName(driver);
ds.setMaxTotal(10);
ds.setValidationQuery("select 1"); //DBCP throws error without this query
KitMemberTaxRaw表可以连接到表KitMemberKitMemberSaleReturnRaw或KitMemberSaleReturnRaw(但不能同时连接到两者)。
EF如何确定'关系的主要结束'?
答案 0 :(得分:0)
问题原来是EF6无法自动理解包含父级和可选祖父级链接的表。 Microsoft提供的模板生成的导航属性正确但不充分。
为了解决这个问题,我手动为他们不理解的关系创建了临时主键。
注意:我使用的DataContractSerializer类创建了POCO对象,为实例化的导航属性创建了一个数组。我不得不更改模板以生成IList<>属性而不是ICollection<>。在运行时出现错误,因为无法动态调整数组的大小。