gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 多对多关系,使用 "My Own"表

转载 作者:行者123 更新时间:2023-12-01 10:41:20 29 4
gpt4 key购买 nike

我对在 Entity Framework 中使用 Code First 方法还很陌生,我知道我有像下面实体这样的多对多关系,EF 会自动创建中间表:

class Post {
...
public virtual ICollection<Category> Categories {get; set;}
...
}

class Category {
...
public virtual ICollection<Post> Posts {get; set;}
...
}

但是,如果在中间表中我需要有额外的数据字段,一种可能的方式(我目前喜欢这种方式,可能是因为我不知道更好的方式)是定义我自己的新实体,例如:

class Posts_Categories {
public int Id {get; set;}
public int CategoryId {get; set;}
public int PostId {get; set;}
public string Exrtafield1 {get; set;}
public int ex extraField2 {get; set;}
...
public virtual Post Post {get; set;}
public virtual Category Category {get; set;}
}

使用这种方法,EF 确实创建了我的自定义中间表,但它也创建了另一个名为“PostsCategories”的自己的表,它只包含一个指向 Post_Id 的外键和另一个指向 Category_Id 的外键。

如何让它不创建额外的那个而使用我定义的那个?这是管理带有额外数据字段的多对多关系的好方法吗??

最佳答案

你应该像这样使用一对多关系:

public class Post
{
public System.Int32 PostId { get; set; }

[InverseProperty("Post")]
public virtual ICollection<Posts_Category> PostCategories { get; set; }
}

public class Category
{
public System.Int32 CategoryId { get; set; }

[InverseProperty("Category")]
public virtual ICollection<Posts_Category> PostCategories { get; set; }
}

public class Posts_Category
{
public System.Int32 PostId { get; set; }

public System.Int32 CategoryId { get; set; }

[ForeignKey("PostId")]
[InverseProperty("PostCategories")]
public virtual Post Post { get; set; }

[ForeignKey("CategoryId")]
[InverseProperty("PostCategories")]
public virtual Category Category { get; set; }
}

关于asp.net-mvc - ASP.NET MVC 多对多关系,使用 "My Own"表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29831729/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com