0
Visual Studio Porjectに新しいADO.Net EDMアイテムを追加しました。EDMクラスが部分クラスである理由
using System;
using System.Data.Entity;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Diagnostics;
namespace Rajat.Personal.EF
{
public partial class PracticeContext : DbContext
{
public PracticeContext()
: base("name=LocalContext")
{
this.Database.Log = s => Debug.WriteLine(s);
}
public virtual DbSet<User> Users { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.Property(e => e.firstname)
.IsUnicode(false);
modelBuilder.Entity<User>()
.Property(e => e.lastname)
.IsUnicode(false);
modelBuilder.Entity<User>()
.Property(e => e.emailaddress)
.IsUnicode(false);
modelBuilder.Entity<User>()
.Property(e => e.password)
.IsUnicode(false);
}
}
}
私はなぜPracticeContextは部分クラスである2つの質問
- がありますか?
- なぜユーザーはバーチャルプロパティですか?
その理由は次のとおりです。(1)自動生成コードをビジネスロジックコードから分離し、その後で単一クラスとしてコンパイルするために使用される部分クラス。 (2)仮想 'DbSet'プロパティは、継承されたクラスでオーバーライド可能ないわゆる遅延ロードメカニズムを有効にします。 –
OOとC#の基本をブラッシュアップする必要があります。 – niksofteng