C# 使用实体框架从关系映射单个属性
是否可以在实体框架中映射一对多关系,其中关系的“多”端实际上只是一个简单类型 例如,假设以下是我的数据库表:C# 使用实体框架从关系映射单个属性,c#,entity-framework,C#,Entity Framework,是否可以在实体框架中映射一对多关系,其中关系的“多”端实际上只是一个简单类型 例如,假设以下是我的数据库表: create table EventDetails ( EventId int not null identity(1, 1), Name nvarchar(200) not null, constraint PK_EVentDetails primary key (EventId) ) create table EventDates ( Even
create table EventDetails
(
EventId int not null identity(1, 1),
Name nvarchar(200) not null,
constraint PK_EVentDetails primary key (EventId)
)
create table EventDates
(
EventId int not null,
EventDate date not null,
constraint PK_EventDates primary key (EventId, EventDate),
constraint FK_EventDate_Event foreign key (EventId) references EventDetails(EventId)
)
我想将其表示为一个类,如下所示:
public class EventDetails {
public int Id { get; set; }
public string Name { get; set; }
public IList<DateTime> Dates { get; set; }
}
公共类事件详细信息{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共IList日期{get;set;}
}
只是不确定如何使用实体映射来实现这一点:
public class EventDetailsMap : EntityTypeConfiguration<EventDetails>
{
public EventDetailsMap()
{
ToTable("EventDetails").HasKey(evnt => evnt.Id);
// --- WHAT GOES HERE?? ---
HasMany(evnt => evnt.Dates)
.WithRequired()
.HasForeignKey(/* ??? */);
}
}
公共类EventDetailsMap:EntityTypeConfiguration
{
公共事件详细信息map()
{
ToTable(“EventDetails”).HasKey(evnt=>evnt.Id);
//---这里有什么---
有很多(evnt=>evnt.Dates)
.WithRequired()
.HasForeignKey(/*?*/);
}
}
我的直觉是,我不能这样做——相反,我必须创建一个EventDate
类——但如果能确定这一点,那就太好了
(仅供参考:我使用的是EF6)非常确定您需要一个完整的实体,否则EF不知道如何映射到数据库表。我同意@DavidG,因为您没有告诉EF
日期
是数据库集
(或导航属性)。相反,您只是告诉EF您的模型有一个日期时间的列表(这是不正确的-它是另一个表/实体)。我会说,创建自定义配置可能是可能的(因为EF是开源的),但我认为这是一项很好的工作。