实体上的SaveChanges()没有更新记录,没有抛出异常

时间:2013-01-17 09:32:07

标签: 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;

db.AddToMailinglists_Details(_addMail_Details);
db.SaveChanges();

正如您可能从代码中看到的那样:Entities db = new Entities()

AddToMailinglists_Details(obj)AddObject("Mailinglists_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<customClass>,自定义类扩展了4个属性:listname(字符串),usage(字符串),负责(字符串),recipients(string [])

2 个答案:

答案 0 :(得分:0)

尝试db.MalingLists.Add(_addMail_Details);而不是调用db.AddToMailinglists_Details - 您可能在创建的方法中出现问题。

答案 1 :(得分:0)

Incase Mailinglists_Details依赖于您需要使用其导航属性为其填充它的另一个实体:考虑到您具有MailingList 1-&gt; * MailingListDetails关系。在这种情况下,您必须放置MailingListDetails.MailingList = mailingListObject;