当我迁移我的新模型和数据时,我得到了以下关于多个外键的错误:
外键属性“InsurancePolicy.InsuranceSubjectID1”是在阴影状态下创建的,因为实体类型中存在简单名称为“InsuranceSubjectID”的冲突属性,但该属性未Map、已用于其他关系或与关联的主键类型不兼容。
奇怪的是,我在所有模型中定义的关系都是一样的,但有些工作正常(没有1的FK被存储),有些则不行。
我的模型示例:
public class InsurancePolicy
{
public int InsurancePolicyID { get; set; }
[DataType(DataType.Currency)]
[Column(TypeName = "money")]
public decimal FinalSum { get; set; }
public DateTime DateFrom { get; set; }
public DateTime DateTo { get; set; }
public int? InsuredID { get; set; }
public Insured? Insured { get; set; }
public int? InsuranceSubjectID;
public InsuranceSubject? InsuranceSubject { get; set; }
public int? InsuranceSubtypeID;
public InsuranceSubtype? InsuranceSubtype { get; set; }
}
public class InsuranceSubject
{
public int InsuranceSubjectID { get; set; }
[Required]
[StringLength(50)]
public string Title { get; set; }
public string Description { get; set; }
[DataType(DataType.Currency)]
[Column(TypeName = "money")]
public decimal EstimatedValue { get; set; }
public int? InsuredID;
public Insured? Insured;
public int? InsuranceSubjectTypeID { get; set; }
public InsuranceSubjectType? InsuranceSubjectType { get; set; }
public ICollection<InsurancePolicy>? InsurancePolicies { get; set; }
}
我试着在代码中去掉外键属性,只留下引用导航属性(删除了int并留下了对象),它工作正常,但是我需要FK int用于将来的实现。
下面是GitHub repo链接,以了解更多信息(分支模型-扩展):https://github.com/lenartgolob/Insurance-IS/tree/model-extension
5条答案
按热度按时间6psbrbz91#
好吧...为了我。
我有亲子关系。
我已经为父代FK输入了标量,并且定义了标量FK“int”的ormMap。
我已经将MyParentKeyMap到MyChildOrmMap上。
但是我没有对“我的父母”进行ormMap。
一旦我为TheMyParent和相互的MyKids编写了1:N关系,错误就消失了。
也就是说,我错过了下面的代码(下面的代码将在MyChildMap(流畅的ormMap)中)
whitzsjs2#
我在引用导航属性前面添加了
public virtual
,它解决了这个问题。1hdlvixo3#
对我来说,问题是FK部分中的属性ID类型与PK实体部分中的类型不同:
其中付款具有ID的long属性:
型
mnowg1ta4#
对我来说是我错误地引用了同一个实体两次:
9gm1akwq5#
对我来说,这是重复的基调。