C# 实体上的SaveChanges()未更新记录,未引发异常
代码如下:C# 实体上的SaveChanges()未更新记录,未引发异常,c#,database,entity-framework,C#,Database,Entity Framework,代码如下: Mailinglists_Details _addMail_Details = new Mailinglists_Details(); _addMail_Details.listname = mailingData[counter].listname; _addMail_Details.usage = mailingData[counter].usage; _addMail_Details.responsible = mailingData[counter].responsible;
Mailinglists_Details _addMail_Details = new Mailinglists_Details();
_addMail_Details.listname = mailingData[counter].listname;
_addMail_Details.usage = mailingData[counter].usage;
_addMail_Details.responsible = mailingData[counter].responsible;
db.AddToMailinglists_Details(_addMail_Details);
db.SaveChanges();
正如您自己从代码中看到的:Entities db=newentities()
addtomaillists\u Details(obj)
是AddObject(“Mailinglists\u Details”,obj)
请澄清:
[global::System.CodeDom.Compiler.GeneratedCode("System.Data.Entity.Design.EntityClassGenerator", "4.0.0.0")]
public void AddToMailinglists_Details(Mailinglists_Details mailinglists_Details)
{
this.AddObject("Mailinglists_Details", mailinglists_Details);
}
现在奇怪的是,当使用完全相同的语法创建一些虚拟记录时,效果是一样的。虚拟记录的唯一区别是,实体是显式声明的,而不是在using语句中声明的,这会导致问题吗?(请注意,使用程序集在同一个内部进行比较是有效的!!)
编辑:为了进一步澄清,我访问的表是完全独立的,这里有一些关于如何生成虚拟数据的代码:
Mailinglists_Details _addDetails_Mail = new Mailinglists_Details();
_addDetails_Mail.listname = "apprentices@domain.com";
_addDetails_Mail.usage = "Contact all apprentices @enterprise";
_addDetails_Mail.responsible = "default responsible: some ppl";
ent_mail.AddToMailinglists_Details(_addDetails_Mail);
ent_mail.SaveChanges();
我还尝试了mailingData[counter].listname.ToString()代码>
EDIT2:mailingData是List
,自定义类扩展了4个属性:listname(string)、usage(string)、responsible(string)、recipients(string[])Trydb.MalingLists.Add(\u addMail\u Details)
而不是调用db.AddToMailinglists\u Details
-您创建的方法可能存在问题。如果Mailinglists\u Details依赖于另一个实体,您需要使用其导航属性来填充它,例如:考虑到您有MailingList 1->*MailingListDetails关系。在这种情况下,您必须放置MailingListDetails.MailingList=mailingListObject代码>很抱歉告诉您,但我使用相同的方法生成虚拟记录,而且效果非常好。另外,方法db.MailingLists\u Details.Add()
不存在…请添加using语句(它是否包含对savechanges的调用?)我不确定您的意思,但我可以告诉您,savechanges()是实体的一个方法,它应该将更改从实体更新到数据库。事实并非如此,MailingList_详细信息是独立的。我不明白为什么这不起作用,请提供完整的代码部分好吗?(包括上下文初始化)我去掉了上下文初始化来声明Entities db=newentities()
,这使得另一段代码再次工作。