使用EF 4.1 Code First插入不保存

时间:2011-08-07 06:25:48

标签: entity-framework c#-4.0

我在这里遇到了一个令我心烦意乱的问题。这是一个非常简单的插入到一个非常简单的表中...我做了一千次,但由于某种原因不能在这里工作。

基本上,我正在运行一个简单的INSERT(通过存储库模式),然后保存上下文更改。没有错误,我可以顺利完成它,但记录不在数据库中。

为了(希望)覆盖我的屁股反对愚蠢:我知道我已连接到正确的数据库,因为它正在获取种子数据(我的应用程序中只有1个连接字符串)。另外,我知道每次都没有重建数据库。

这是调用代码:

var result = new Core.Models.Poll
{
    ElectionId = electionId,
    DatePublished = pubDate,
    DateCreated = DateTime.Now,
    NameEn = nameEn,
    NameFr = nameFr,
    Params = splitVals,
    Url = url,
    Slug = String.Empty
};    

Components.PollRepository.Insert(result);
Components.PollRepository.Save();

以下是存储库中的方法:

public void Insert(Poll poll)
{
    Context.Polls.Add(poll);
}

public void Save()
{
    Context.SaveChanges();
}

Context.Polls.Add(poll);行,我检查我的对象...当我使用poll中的值在SSMS中手动运行insert语句时,创建的记录没有问题。当我在下一行(Context.Entry(poll))运行}时,我看到它的状态已添加(正如预期的那样)。

我在本地开发机器上使用IIS Express对抗SQLEXPRESS。

哦,这是Poll课程的关键(我尝试了DatabaseGenerated属性没有运气):

[Key]
//[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }

非常感谢任何帮助,甚至任何其他尝试。

1 个答案:

答案 0 :(得分:2)

检查PollReppsitory中Context变量的声明。还要检查Components中的PollRepository属性。确保每次都返回相同的实例。

如果用于保存更改的Context实例不是用于插入的实例,则会看到这些结果。

您在Insert方法中检查了对象的状态。我会在Save方法中做同样的事情。如果实体在那里并且具有new状态,那么你可以排除我的假设,即插入和保存正在不同的上下文中执行。