1

更新可能なモデルを作成する方法があるかどうかを知りたいだけです。現在、モデル内のすべてのテーブルに対して、挿入、更新、および削除のプロシージャを作成する必要があります。これは非常に面倒なので、これを解決する方法が1つあるかどうか疑問に思いました。

以前の作業で、プロシージャを作成せずにモデルを作成してアクセス(CRUD)していたことを覚えています。しかし、私はそれがどのように作られたのか今はよくわかりません。

ありがとうございました!

4

2 に答える 2

1

Entity Framework 内で挿入、選択、更新、および削除するためのデータベースへの実際の SQL 呼び出しの生成 (オンザフライまたはコンパイル時に既に生成されている) を自動化できるさまざまな方法があります。

  1. ORM ツール (Linq to Entities など) を使用して、生の SQL の記述を最小限に抑えるか、またはなくすことができます。つまり、エンティティとそのプロパティ/メソッドで正しい属性を使用する必要があり、それは手動のプロセスです。(この MSDN ページの背景説明)

  2. フレームワークが既存のデータベース スキーマ (SqlServer タイプのデータベースでのみ可能) に基づいてエンティティを自動的に生成できるようにすることができます。これにより、基本的に作業の 90% が行われます。たとえば、デフォルトの挿入 SQL をカスタムでオーバーライドする必要がある場合があります。これは、Generate Database Wizard (Visual Studio 2008+ の一部だと思います) を介して実現されます。

于 2012-07-09T05:27:23.170 に答える
0

POCOEF でクラスを使用できます。4.1 以降を使用している場合は、このDbContextクラスを使用できます。OnModelCreatingモデルをテーブル/列にマップするには、コンテキスト クラス (から継承) をオーバーライドするだけDbContextです。というモデルUser、 というテーブルUsers、およびコンテキスト クラスMyContextがあるとします。コードは次のようになります。

public class User
{
  public int UserId { get; set; }
  public string UserName { get; set; }
}

public class MyContext : DbContext
{
  public MyContext() :
    base("MyContext")
  {
  }

  public DbSet<User> Users { get; set; }

  protected override void OnModelCreating(ModelBuilder modelBuilder)
  {

    base.OnModelCreating(modelBuilder);

    modelBuilder.Entity<User>().
      .ToTable("Users");
    modelBuilder.Entity<User>().
      .Property(d => d.UserId)
      .HasColumnName("UserId")
    modelBuilder.Entity<User>().
      .Property(d => d.UserName)
      .HasColumnName("UserName");
  }    

}

それを使用するには、単にUserインスタンスを に追加してからDbSet、 を呼び出しますSaveChanges

using(MyContext ctx = new MyContext())
{
  var u = new User() { UserId = 1, UserName = "A" };
  ctx.Users.Add(u);
  ctx.SaveChanges();
}
于 2012-07-09T05:43:44.193 に答える