Entity framework error: Model compatibility cannot be checked because

Lỗi:

Model compatibility cannot be checked because the database does not contain model metadata. Model compatibility can only be checked for databases created using Code First or Code First Migrations

Khắc phục

<add name=”AdventureWorksEntities”connectionString=”metadata=res://*/Models.AdventureWorks.csdl|res://*/Models.AdventureWorks.ssdl|res://*/Models.AdventureWorks.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=[YOUR DATA SOURCE];initial catalog=AdventureWorks;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;” providerName=”System.Data.EntityClient” />

Trong trường hợp không chỉ ra metadata thì dùng trong 

public ATMDBContext()
: base(“name=DefaultConnection”)
{
//Database.SetInitializer<ATMDBContext>(new DropCreateDatabaseAlways<ATMDBContext>());
}

 

Advertisements

Data Annotation EntityFramework

Sử dụng Data Annotation để hiển thị kiểu dữ liệu theo định dạng Ngày/Tháng/Năm (dd/MM/yyyy)

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString=”{0:dd/MM/yyyy}”)]
[DefaultValue(“getdate()“)]
public DateTime CreatedDate { get; set; }

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = “{0:dd/MM/yyyy}”)]
public Nullable<System.DateTime> NGAY_BAT_DAU { get; set; }

 

 

Table per hierarchy – type 1

public class Course
{
[Key]
public int CourseId { get; set; }
public string Name { get; set; }
}
public class OnlineCourse : Course
{
public string URL { get; set; }
}
public class OfflineCourse : Course
{
public string Address { get; set; }
}

public class TPHContext:DbContext
{
public DbSet<Course> Courses { get; set; }
public TPHContext() : base(“TPH”)
{
Database.SetInitializer<TPHContext>(new DropCreateDatabaseIfModelChanges<TPHContext>());
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Course>()
.Map<OnlineCourse>(m => m.Requires(“Type”).HasValue(“OnlineCourse”))
.Map<OfflineCourse>(m => m.Requires(“Type”).HasValue(“OfflineCourse”));
}
}

Không bind trường id trong asp.net mvc view

Khi muốn Unbind trường id hoặc bất kỳ một trường nào đó của Model trên view bạn sử dụng thuộc tính [Bind(Include = “ten_truong”)] trong action method để VS sinh ra view tự động và không bind trường này.

Để làm điều đó, bạn thêm khai bao sau trong action method

public ActionResult Index([Bind(Exclude = “Id”)] SomeDomainModel model)
{

//source code

}

Composite key trong EF Code first

Đoạn mã dưới đây thiết lập khóa chính cho Entity Framework code first trong trường hợp khóa chính là khóa kép (composite key)

public class OrderDetails
{
 public OrderDetails()
 { 
 
 }
 [Key]
 [Column(Order=1)]
 public int ProductId{ get; set; }
 
 [Key]
 [Column(Order=2)]
 public int OrderId{ get; set; }
 
 public int Quantity{ get; set; }
...
 
}