更新可能なモデルを作成する方法があるかどうかを知りたいだけです。現在、モデル内のすべてのテーブルに対して、挿入、更新、および削除のプロシージャを作成する必要があります。これは非常に面倒なので、これを解決する方法が1つあるかどうか疑問に思いました。
以前の作業で、プロシージャを作成せずにモデルを作成してアクセス(CRUD)していたことを覚えています。しかし、私はそれがどのように作られたのか今はよくわかりません。
ありがとうございました!
更新可能なモデルを作成する方法があるかどうかを知りたいだけです。現在、モデル内のすべてのテーブルに対して、挿入、更新、および削除のプロシージャを作成する必要があります。これは非常に面倒なので、これを解決する方法が1つあるかどうか疑問に思いました。
以前の作業で、プロシージャを作成せずにモデルを作成してアクセス(CRUD)していたことを覚えています。しかし、私はそれがどのように作られたのか今はよくわかりません。
ありがとうございました!
Entity Framework 内で挿入、選択、更新、および削除するためのデータベースへの実際の SQL 呼び出しの生成 (オンザフライまたはコンパイル時に既に生成されている) を自動化できるさまざまな方法があります。
ORM ツール (Linq to Entities など) を使用して、生の SQL の記述を最小限に抑えるか、またはなくすことができます。つまり、エンティティとそのプロパティ/メソッドで正しい属性を使用する必要があり、それは手動のプロセスです。(この MSDN ページの背景説明)
フレームワークが既存のデータベース スキーマ (SqlServer タイプのデータベースでのみ可能) に基づいてエンティティを自動的に生成できるようにすることができます。これにより、基本的に作業の 90% が行われます。たとえば、デフォルトの挿入 SQL をカスタムでオーバーライドする必要がある場合があります。これは、Generate Database Wizard (Visual Studio 2008+ の一部だと思います) を介して実現されます。
POCO
EF でクラスを使用できます。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();
}