C# Enitity框架类型中的每个属性名称都必须是唯一的
我已经定义了以下实体,并且还定义了关系映射。但是,在保存时,我得到一个错误C# Enitity框架类型中的每个属性名称都必须是唯一的,c#,entity-framework,entity-framework-6,ef-model-builder,C#,Entity Framework,Entity Framework 6,Ef Model Builder,我已经定义了以下实体,并且还定义了关系映射。但是,在保存时,我得到一个错误Name:类型中的每个属性名称都必须是唯一的。属性名称“ResponseId”已定义。在EF 6中 System.Data.Entity.ModelConfiguration.ModelValidationException 这让我震惊了两天,但我不确定,我班上的问题是什么。如果我删除ResponseOffer中的ResponseId,它工作正常。但是,我需要设置此值以将其保存在数据库及其FK中 请求可能包含许多响应,每个
Name:类型中的每个属性名称都必须是唯一的。属性名称“ResponseId”已定义。
在EF 6中
System.Data.Entity.ModelConfiguration.ModelValidationException
这让我震惊了两天,但我不确定,我班上的问题是什么。如果我删除ResponseOffer中的ResponseId,它工作正常。但是,我需要设置此值以将其保存在数据库及其FK中
请求可能包含许多响应,每个响应可能包含许多响应提议
[Table("Response")]
public class Response : AggregateRoot // AggregateRoot is an Entity
{
public Response(Request Request): this()
{
ResponseId = Guid.NewGuid();
Request = Request;
MaterialId = Request.MaterialId;
}
public Response()
{
}
public Response(Guid ResponseId)
{
ResponseId = ResponseId;
}
public Response(Guid ResponseId, Request Request)
{
ResponseId = ResponseId;
Request = Request;
}
public Guid ResponseId { get; private set; }
public virtual Request Request { get; set; }
public bool IsActiveVersion { get; set; }
public EntityHashSet<ResponseOffer> EditableResponseOffers => (EntityHashSet<ResponseOffer>)ResponseOffers;
}
映射
modelBuilder.Entity<Response>()
.HasRequired(e => e.Request)
.WithMany(e => e.Responses)
.WillCascadeOnDelete(false);
modelBuilder.Entity<Response>()
.HasMany(e => e.ResponseOffers)
.WithRequired(e => e.Response)
.WillCascadeOnDelete(false);
我不确定,但是,我会尝试设置“EditableResponseOffers”属性 并通过移除私有响应ID来测试行为
public Guid ResponseId { get; set; }
public virtual EntityHashSet<ResponseOffer> EditableResponseOffers => (EntityHashSet<ResponseOffer>)ResponseOffers;
公共Guid响应ID{get;set;}
公共虚拟EntityHashSet EditableResponseOffers=>(EntityHashSet)ResponseOffers;
响应是否是一个实体
?您没有指定继承。@是的,只是更新了它。同样的问题还是EF6或EF Core?我们能看到类实体和AggregateRoot吗?@Orwel这些类只有一个简单的属性,比如AddedDate和IsActive属性
INSERT [dbo].[ResponseOffer]([ResponseOfferId], [RequestItemId],
[Price], [Quantity], [Comment], [ResponseId], [Response_ResponseId1])
public Guid ResponseId { get; set; }
public virtual EntityHashSet<ResponseOffer> EditableResponseOffers => (EntityHashSet<ResponseOffer>)ResponseOffers;