EF 7 alpha3에서 일대일 관계를 만드는 방법은 무엇입니까?EF 7 알파에서 외래 키를 추가하는 방법
탐색 속성을 정의하는 옛 방식이 작동하지 않으며 modelBuilder에 이전에 사용 된 HasRequired/HasOptional 메서드가 없습니다.
누구든지 그 점을 밝힐 수 있습니까?
EF 7 alpha3에서 일대일 관계를 만드는 방법은 무엇입니까?EF 7 알파에서 외래 키를 추가하는 방법
탐색 속성을 정의하는 옛 방식이 작동하지 않으며 modelBuilder에 이전에 사용 된 HasRequired/HasOptional 메서드가 없습니다.
누구든지 그 점을 밝힐 수 있습니까?
최근까지는 관계를 정의하기위한 모델 빌더 API가 없었습니다. 대신 기본 modelBuilder.Model
개체를 조작해야합니다. 다음은 일대 다 관계의 예입니다. what these APIs will look like에 대한 생각
class Blog
{
public Blog()
{
Posts = new List<Post>();
}
public int Id { get; set; }
public ICollection<Post> Posts { get; set; }
}
class Post
{
public int Id { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
class BlogContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<Post>().ForeignKeys(x => x.ForeignKey<Blog>(p => p.BlogId));
var model = builder.Model;
var blog = model.GetEntityType(typeof(Blog));
var post = model.GetEntityType(typeof(Post));
var fk = post.ForeignKeys.Single(k => k.ReferencedEntityType == blog);
blog.AddNavigation(new Navigation(fk, "Posts", pointsToPrincipal: false));
post.AddNavigation(new Navigation(fk, "Blog", pointsToPrincipal: true));
}
}
당신은 (2014년 7월 31일 기준) 현재에 대한 자세한 내용을보실 수 있습니다. 최종 결과는 다음과 같습니다.
modelBuilder.Entity<Blog>()
.OneToMany(b => b.Posts, p => p.Blog).ForeignKey(b => b.BlogId);
EF7 베타 7에서는 엔티티 간의 관계를 정의하기위한 새로운 세트의 메소드가 도입되었습니다. 많은 관계 하나
와modelBuilder.Entity<Post>()
.Reference(typeof(Blog), "Blog")
.InverseCollection("Posts")
.ForeignKey(new string[] { "BlogId" });
, Blog
엔터티 Post
에서 .Reference(typeof(Blog), "Blog")
관계가 구성된다. 첫 번째 논쟁은 게시 대상 및 두 번째 논증이 탐색 속성의 이름 인 엔터티 유형입니다.
함께 .InverseCollection("Posts")
과 일대 다 관계가 구성됩니다. 이 함수에 대한 불확실성은 탐색 컬렉션의 이름입니다.
.ForeignKey(new string[] { "BlogId" })
으로 외래 키가 구성됩니다. 이 외래 키가 설정되지 않은 경우 섀도 외래 키가 자동으로 생성됩니다.
저는 EF7 beta3을 사용하고 있으며 Entity에는 ForeignKeys 속성이 없습니다. 또한 OneToMany, ManyToOne, One 및 Manya는 여전히 누락되었습니다. 현재 EF7에서 일대 다/다 대 일 관계를 가질 수있는 다른 가능성은 무엇입니까? –
Entity <>(). HasMany(). WithOne(). ForeignKey() -syntax를 사용하여 성공했습니다. 참조 된 상위 모델 ("Blog")이 null 인 경우에도 최소한 사용자 정의 외래 키 ("BlogId"가 아니라 "SomethingOtherId")가 작동 중입니다. 이전에 "열"BlogId "오류를 찾을 수 없습니다". –
모두 사라졌습니다. EF7 beta7. – Shimmy