1

現在、「Effort」フレームワーク ( http://effort.codeplex.com/wikipage?title=Tutorials&referringTitle=Home )を使用して、Entity Framework のコンテキスト クラスを単体テストしようとしています。

これは私のテストが現在どのように見えるかです:

[TestMethod]
public void GetUseraccountsForRealTest()
{
    DbConnection connection = Effort.DbConnectionFactory.CreateTransient();
    SqlContext context = new SqlContext(connection);

    context.TaskComment.Add(new TaskComment() { Id = 1, Message = "Test" });
}

最後の行は機能していません。何も起こりません。

これが私の SqlContext クラスの外観です。

public class SqlContext : DbContext
{
    ...
    public IDbSet<TaskComment> TaskComment { get; set; }
    ...

    //Constructor used by webserver
    public SqlContext(string connectionString) : base(connectionString)
    {
    }

    //Constructor used for unit testing
    public SqlContext(DbConnection connection) : base(connection, true)
    {
        this.Configuration.LazyLoadingEnabled = false;
    }

    /// 
    /// <param name="modelBuilder"></param>
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();   
    }
}

この問題を解決する方法を知っている人はいますか? 「努力」の経験がなく、ドキュメントもあまりありません。:-(

4

1 に答える 1

1

自分で問題を解決しました。私は自分のコンテキストでは IDbSet を使用しませんでしたが、DbSet だけを使用したため、いくつかの問題が発生しました。

于 2013-03-29T08:51:57.697 に答える