C# 两个都不是主键时的EF一对一关系
我有两个实体需要一起映射。由于它们都是数据库视图,从技术上讲,它们都不是主键C# 两个都不是主键时的EF一对一关系,c#,asp.net-mvc-3,entity-framework,entity-framework-4,linq-to-entities,C#,Asp.net Mvc 3,Entity Framework,Entity Framework 4,Linq To Entities,我有两个实体需要一起映射。由于它们都是数据库视图,从技术上讲,它们都不是主键 [Table("Name")] public class MemberInfo { [Key] [Column("id")] public string MemberId { get; set; } [Column("first_name")] public string FirstName { get; set; }
[Table("Name")]
public class MemberInfo
{
[Key]
[Column("id")]
public string MemberId { get; set; }
[Column("first_name")]
public string FirstName { get; set; }
[Column("last_name")]
public string LastName { get; set; }
public string Designation { get; set; }
[Column("full_name")]
public string FullName { get; set; }
}
public class ChangeLog
{
[Column("ID")]
public int ID { get; set; }
[Column("asset_id")]
public virtual Asset AssetID { get; set; }
[Column("member_id")]
public int MemberID { get; set; }
public virtual MemberInfo MemberInfo { get; set; }
[Column("comment")]
public string Comment { get; set; }
[Column("createdDT")]
public DateTime CreatedDT { get; set; }
}
如果我试图从ChangeLog访问MemberInfo,我会收到一个错误,显示:
A relationship multiplicity constraint violation occurred: An EntityReference can have no more than one related object, but the query returned more than one related object. This is a non-recoverable error.
MemberInfo的MemberID字段是唯一的。我需要能够通过MemberInfo属性从ChangeLog访问MemberInfo属性 此错误适用于ChangeLog类中的资产属性 你不写那门课
我认为通过更改该属性,您可以修复此错误此错误适用于ChangeLog类中的资产属性 你不写那门课
我认为通过更改该属性,您可以修复此错误不确定这是否能为您解决问题,但您应该在ChangeLog类的MemberID字段中添加ForeignKey属性。我还将在您的标识符字段(ID和MemberId)上添加Key属性,我刚刚在您的标题中注意到,您需要一对一的关系。在这种情况下,您应该在ChangeLog的成员类中添加一个引用字段。现在,根据您的模型规范,可以将多个变更日志链接到一个成员。通过添加该引用,您将强制执行1-1关系。当我在成员中添加对ChangeLog的引用时,会出现一个错误,提示“无效列名'ChangeLog_ID'。”名称表(MemberInfo对象)中指向ChangeLog表的外键列的名称是什么?Ameen是对的,您需要在yoru MemberInfo类中引用ChangeLog,并且您还需要进行一些配置以使其正常工作。Jeff,没有指向ChangeLog表的外键对象。我希望我可以通过使用Changelog中的MemberID字段(对应于MemberInfo中的ID)来访问MemberInfo成员。我不确定这是否能为您解决问题,但您应该在Changelog类的MemberID字段中添加ForeignKey属性。我还将在您的标识符字段(ID和MemberId)上添加Key属性,我刚刚在您的标题中注意到,您需要一对一的关系。在这种情况下,您应该在ChangeLog的成员类中添加一个引用字段。现在,根据您的模型规范,可以将多个变更日志链接到一个成员。通过添加该引用,您将强制执行1-1关系。当我在成员中添加对ChangeLog的引用时,会出现一个错误,提示“无效列名'ChangeLog_ID'。”名称表(MemberInfo对象)中指向ChangeLog表的外键列的名称是什么?Ameen是对的,您需要在yoru MemberInfo类中引用ChangeLog,并且您还需要进行一些配置以使其正常工作。Jeff,没有指向ChangeLog表的外键对象。我希望通过使用Changelog中的MemberID字段(对应于MemberInfo中的ID)可以访问MemberInfo成员