MVC3 응용 프로그램을 만들려고합니다. 먼저 DB를 만들 때 EF 코드로 문제가 있습니다. 나는이 테이블을 가지고있다 : User, Category, Product, Loan. 사용자가 하나 이상의 범주를 만들 수 있습니다. 사용자는 하나 이상의 제품을 추가 할 수 있습니다. 사용자는 하나 이상의 대출을 추가 할 수 있습니다. 범주에는 하나 이상의 제품이있을 수 있습니다. 범주는 사용자에게 속합니다. 제품에는 대출이 하나 이상있을 수 있습니다. 제품은 사용자에 속합니다. 제품은 범주에 있습니다. 대출은 사용자에게 속합니다. 대출이 제품에 추가되었습니다.코드 첫 번째 데이터베이스 모델
public class User
{
public int UserID { get; set; }
public string UserName { get; set; }
public virtual ICollection<Category> Categorys { get; set; }
public virtual ICollection<Product> Products { get; set; }
public virtual ICollection<Loan> Loans { get; set; }
}
public class Category
{
public int CategoryID { get; set; }
public string CategoryName { get; set; }
public int UserID { get; set; }
public virtual User User { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
public class Product
{
public int ProductID { get; set; }
public string ProductName { get; set; }
public int UserID { get; set; }
public int CategoryID { get; set; }
public virtual User User { get; set; }
public virtual Category Category { get; set; }
public virtual ICollection<Loan> Loans { get; set; }
}
public class Loan
{
public int LoanID { get; set; }
public bool LoanStatus { get; set; }
public int UserID { get; set; }
public int ProductID { get; set; }
public virtual User User { get; set; }
public virtual Product Product { get; set; }
}
유무는 문맥을 maded :
<add name="BuisnessContext"
connectionString="Data Source=|DataDirectory|Buisness.sdf"
providerName="System.Data.SqlServerCe.4.0"/>
또한
A는 간단한 초기화 클래스 maded있다 : 또한 내가 가지고
public class BuisnessInitializer : DropCreateDatabaseIfModelChanges<BuisnessContext>
{
protected override void Seed(BuisnessContext context)
{
var users = new List<User>
{
new User { UserName = "u1"},
new User { UserName = "u2"} };
users.ForEach(s => context.Users.Add(s));
context.SaveChanges();
var categories = new List<Category>
{
new Category { CategoryName = "N1", UserID=1 } };
categories.ForEach(s => context.Categorys.Add(s));
context.SaveChanges();
var products = new List<Product>
{
new Product { ProductName = "N1", UserID = 1, CategoryID = 1 }
};
products.ForEach(s => context.Products.Add(s));
context.SaveChanges();
var loans = new List<Loan>
{
new Loan { LoanStatus = true, UserID = 2, ProductID = 1 }
};
loans.ForEach(s => context.Loans.Add(s));
context.SaveChanges();
}
}
을
public class BuisnessContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Category> Categorys { get; set; }
public DbSet<Product> Products { get; set; }
public DbSet<Loan> Loans { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
은 ConnectionString을 추가했습니다 사용자 t에 대한 컨트롤러 생성 o 사용자를 얻으려고하지만 다음과 같은 오류 메시지가 나타납니다.
모델에 EdmMetadata 유형이 포함되어 있지 않으므로 모델 호환성을 확인할 수 없습니다. IncludeMetadataConvention가 DbModelBuilder 규칙에 추가되었는지 확인하십시오. > Buisness.mdf 더 -
나는 Database.SetInitializer<BuisnessContext>(null);
그럼 내가 그 테이블에 사용자가 그리고 난 내 APP_DATA 폴더에있는 모든 테이블을 찾지 못했습니다 존재 doesen't 오류를 geted Database.SetInitializer<BuisnessContext>(new BuisnessInitializer());
아 파크 변경 시도 데이터베이스가 생성되었지만 테이블이있었습니다.
저는 BuisnessContext에서 One to many 또는 이와 비슷한 코드를 넣어야한다고 생각합니다.하지만 어떻게해야할지 모르겠다.
도움주세요.
가능한 복제본 [EF 4 코드 첫 번째 : EdmMetadata 유형이 모델에 포함되어 있지 않기 때문에 모델 호환성을 확인할 수 없습니다.] (http://stackoverflow.com/questions/8630755/ef-4-code-first-model -compatibility-edmmetadata-t)를 사용할 수 없습니다. 특히 수락 된 답변에 대한 의견 –
나는 이것이 내가 가진 문제가 아니라고 생각하고있다. 나는 DB와 혼란이 있다는 것을 발견했다. 왜냐하면 나는 사용자 (User)를 더 많은 카테고리 (Categories)로, 카테고리 (Categories)를 더 많은 제품 (Product)에, 사용자 (User)를 더 많은 제품 (Products)으로 연결했기 때문에 이것은 순환이고 나는 다른 방법으로는 할 수 없다.그래서 나는 관계 사이클링을 제거하고 작동합니다. 내가 필요로하는 나의 관계를 위해 일하는 방법? –
내가 찾은 저를위한 좋은 대답은 : http://stackoverflow.com/questions/7367339/net-mvc-cyclical-reference-issue-with-entity –