C# EF中的SaveChanges()是否会导致插入未添加的对象?

C# EF中的SaveChanges()是否会导致插入未添加的对象?,c#,entity-framework,tdd,C#,Entity Framework,Tdd,我有一些代码,这几乎是我第一次为实际工作项目做TDD工作的结果。为了引导,我创建了一个实体模型和测试,以断言是否存在实现报告所需的数据记录,这是我确定的第一个具体目标 我认为它工作得相当好,直到我发现代码看起来有一个bug,但测试仍然通过 以下是代码片段:我想这个bug是缺少对AddObject()的调用。 如果有人有耐心/倾向于看整件事,我会把它贴在一张纸上 测试代码: TestFactory target = new TestFactory(@"data source=biz2\da;ini

我有一些代码,这几乎是我第一次为实际工作项目做TDD工作的结果。为了引导,我创建了一个实体模型和测试,以断言是否存在实现报告所需的数据记录,这是我确定的第一个具体目标

我认为它工作得相当好,直到我发现代码看起来有一个bug,但测试仍然通过

以下是代码片段:我想这个bug是缺少对AddObject()的调用。

如果有人有耐心/倾向于看整件事,我会把它贴在一张纸上

测试代码:

TestFactory target = new TestFactory(@"data source=biz2\da;initial catalog=DirectAgents;integrated security=True;");
DirectAgentsEntities actual = target.Create();
Assert.IsNotNull(actual);

var advertisers = actual.Advertisers.OrderBy(c => c.Id).ToList();
Advertiser advertiser1 = advertisers.ElementAt(0);
Assert.AreEqual("Advertiser 1", advertiser1.Name);
实施代码:

 public TestFactory(string connectionString)
 {
     this._connectionString = connectionString;
 }

 public DirectAgentsEntities Create()
 {
    CleanUp(this.DirectAgentsEntities);
    AddAdvertiserClients();
    var db = this.DirectAgentsEntities;
    return db;
}
private void AddAdvertiserClients()
{
    var db = this.DirectAgentsEntities;
    Advertiser a;
    a = new Advertiser
    {
        Name = "Advertiser 1",
        Client = db.Clients.First(c => c.Name == "Client 1")
    };
    db.SaveChanges();
}
private DirectAgentsEntities DirectAgentsEntities
{
    get
    {
        string entityConnectionFormat = @"metadata=res://*/Formss.AB2.Model.ABModel.csdl|res://*/Formss.AB2.Model.ABModel.ssdl|res://*/Formss.AB2.Model.ABModel.msl;provider=System.Data.SqlClient;provider connection string=""{0};multipleactiveresultsets=True;App=EntityFramework""";
        string entityConnectionString = String.Format(entityConnectionFormat, _connectionString);
        return new DirectAgentsEntities(entityConnectionString);
    }
}
private string _connectionString;

如何在不调用AddObject的情况下添加行?我是否应该仔细查看我的代码以发现一个细微的错误?

我相信你是说,在创建了
广告商之后,你觉得需要一个
AddObject

如果我误解了这个问题,我道歉

当您将
广告商
链接到
客户
时,生成的代码中发生的情况是
广告商
也被添加到关系另一端的
客户。广告商
集合。

这在
客户端
对象上被记录为一个更改,并通过
SaveChanges
调用保存。

看到它可能会有所帮助谢谢,您完全理解我的问题。谢谢你的回答。