我正在使用Entity Frameworks创建一个MVC网站。 我正在使用代码第一种方法,所以我通过代码创建了我的数据库。
我有一个包含3个表的数据库:
tblTtypes (1-*)
tblRestaurants (1-*)
tblRecensies
我tblRestaurants
的模型是这样的:
[Table("tblTypes")]
public class Types
{
[Key]
public int PK_TypeNr { get; set; }
[Required]
public string TypeKeuken { get; set; }
[Required]
public string TypeZaak { get; set; }
[Required]
public bool Vegetarisch { get; set; }
public List<Restaurants> Restaurants { get; set; }
}
列表List<Restaurants> Restaurants
是指向另一个表的链接(实体框架会自动注意并添加FK)
RestaurantController
看起来像:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "PK_RestaurantNr,RestaurantNaam,Adres,Website,Aantal_Beoordelingen")] Restaurants restaurants)
{
if (ModelState.IsValid)
{
db.Restaurants.Add(restaurants);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(restaurants);
}
模型Restaurants
看起来像:
[Table("tblRestaurants")]
public class Restaurants
{
[Key]
public int PK_RestaurantNr { get; set; }
[Required]
public string RestaurantNaam { get; set; }
[Required]
public string Adres { get; set; }
public string Website { get; set; }
[Required]
public int Aantal_Beoordelingen { get; set; }
public List<Recensies> Recensies { get; set; }
}
我添加了这样的数据:
Restaurants rest5 = new Restaurants()
{
PK_RestaurantNr = 5,
RestaurantNaam = "Terra",
Adres = "Frederik Lintstraat 5, Leuven, België",
Website = "http://www.terra-leuven.be/",
Aantal_Beoordelingen = 4
};
t1.Restaurants = new List<Restaurants>();
t1.Restaurants.Add(rest5);
我的观点是自动创建的。
问题:当我想添加新的Restaurant
时,我还想将其链接到Type
。但是如何访问自动生成的外键(由实体框架生成)?
答案 0 :(得分:2)
您需要在Restaurants
课程中拥有该课程,以便您能够设置它。你应该输入这样的东西:
[ForeignKey("RestaurantType")]
public int TypesID { get; set; }
public virtual Types RestaurantType { get; set; }
之后,您需要做的就是将TypesID
设置为您要使用的Type的ID,然后保存。从那时起,RestaurantType
属性将被填充,您将Restaurant
与您想要的Types
记录相关联。
最后要注意的是,必须设置TypesID
而不是导航属性。如果设置导航属性,您将发现自己创建重复项。我在here上撰写了一篇博文。