1

我在使用实体框架在 ASP.NET MVC 3 中设计我的数据库时遇到问题。我遵循了一些教程并尝试适应我的需要。第一次使用ASP...

我有三个表:Person、Category 和 Example。

一个示例将在属于一个人的类别中,反之亦然:一个人可能有几个类别,每个类别可能有几个示例。

我想我应该用两个“一对多”的关系来设计它。那是我的模型:

public class Person 
{
  public int PersonID {get; set;}
  public int Name {get; set;}
  public string Text {get; set;}
  public virtual ICollection<Category> {get; set;}
}

public class Category
{
  public int CategoryID {get; set;}
  public int PersonID {get; set;}
  public string Name {get; set;}
  public virtual ICollection<Examples> Examples {get; set;}
  public virtual Person Person {get; set;}
}

public class Examples
{
  public int ExamplesID {get; set;}
  public int CategoryID {get; set;}
  public string Title {get; set;}
  public string Body {get; set;}
  public virtual Category Category {get; set;}
}

我可以创建类别和人员,没问题,即使使用 @Html.DropDownList 帮助程序,问题是当我尝试创建示例时,我想用 Ajax 填充第二个下拉列表但无法做到,突然我意识到我的数据库设计中可能存在缺陷,在我的示例模型中,我将存储类别而不是人,因为后者已经绑定到类别模型,不是吗?

我有点迷路了……如果需要,我可以发布控制器和/或视图,但我认为问题出在模型上。

4

1 回答 1

0

试试这个:

public class Person 
{
  public int PersonID {get; set;}
  public int Name {get; set;}
  public string Text {get; set;}

  [ForeignKey("PersonID")]
  public virtual ICollection<Category> {get; set;}
}

public class Category
{
  public int CategoryID {get; set;}
  public int PersonID {get; set;}
  public string Name {get; set;}

  [ForeignKey("CategoryID")]
  public virtual ICollection<Examples> Examples {get; set;}

  [ForeignKey("PersonID")]
  public virtual Person Person {get; set;}
}

public class Examples
{
  public int ExamplesID {get; set;}
  public int CategoryID {get; set;}
  public string Title {get; set;}
  public string Body {get; set;}
  public virtual Category Category {get; set;}
}
于 2013-06-04T13:57:07.357 回答