C# 实体框架插入空记录
我正在为我正在开发的Web应用程序使用实体框架。该web应用程序可跟踪场馆。每个场馆可以举办多种类型的活动。我有一个包含所有不同类型事件类型(EventType)的表,还有一个记录每个场馆可以举办哪些事件的表(VenueEventType),当我添加一个新的场馆时,我会创建一个新的VenueEventTypes集合,其中包含一个EventType属性,然后转到数据库,找到事件类型并将其添加到每个VenueEventTypes中。问题是,当我保存场地时,它创建的一切都很好,但是它在数据库中为EventType添加了一个空记录,但是VenueEventType外键指向有效的事件类型,而不是新创建的空类型。下面是一些代码:C# 实体框架插入空记录,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,我正在为我正在开发的Web应用程序使用实体框架。该web应用程序可跟踪场馆。每个场馆可以举办多种类型的活动。我有一个包含所有不同类型事件类型(EventType)的表,还有一个记录每个场馆可以举办哪些事件的表(VenueEventType),当我添加一个新的场馆时,我会创建一个新的VenueEventTypes集合,其中包含一个EventType属性,然后转到数据库,找到事件类型并将其添加到每个VenueEventTypes中。问题是,当我保存场地时,它创建的一切都很好,但是它在数据库中为Eve
public void addVenue(VEN_Venues venue)
{
using (var db = new VenueEntities())
{
var parish = from dbParish in db.VEN_Parishes
where dbParish.ParishID == venue.ParishID
select dbParish;
venue.VEN_Parishes = parish.First();
venue = this.processEventTypes(venue, db);
db.VEN_Venues.AddObject(venue);
db.SaveChanges();
}
}
private VEN_Venues processEventTypes(VEN_Venues venue, VenueEntities db)
{
foreach (VEN_VenueEventTypes eventType in venue.VEN_VenueEventTypes)
{
eventType.VEN_EventTypes = new EventTypeFacade().findEventTypes(eventType.VEN_EventTypes, db);
}
return venue;
}
有人能给我指出错误吗
谢谢 您似乎并没有将
venueeventtype
添加到场馆。VenueEventTypes
你必须按照以下思路做一些事情:
venue.VEN_VenueEventTypes.Add(eventType);
如果不需要任何副本,则必须使用“附加”:
venue.VEN_VenueEventTypes.Attach(eventType);
看起来您并没有实际将
venu EventType
添加到场馆。venu VenueEventTypes
你必须按照以下思路做一些事情:
venue.VEN_VenueEventTypes.Add(eventType);
如果不需要任何副本,则必须使用“附加”:
venue.VEN_VenueEventTypes.Attach(eventType);
我正在为页面添加代码。问题是DB中的所有内容都设置正确,只是EventTypes表中添加了一个id为空的额外行。您需要使用
Attach
以避免重复的行条目。每次将其添加到场馆时,您都会创建一个全新的事件类型<代码>附加
只会添加您想要的场馆
和事件类型
之间的关系。请看一看,这样post行就不是重复的,而是一个ID为空且所有其他字段都为空的行。表中的其他内容都是正确的。外键是正确的,只是添加了一个不需要的带有空值的记录。我正在为页面添加代码。问题是DB中的所有内容都设置正确,只是EventTypes表中添加了一个id为空的额外行。您需要使用Attach
以避免重复的行条目。每次将其添加到场馆时,您都会创建一个全新的事件类型<代码>附加
只会添加您想要的场馆
和事件类型
之间的关系。请看一看,这样post行就不是重复的,而是一个ID为空且所有其他字段都为空的行。表中的其他内容都是正确的。外键是正确的,只是添加了不需要的空值记录。