virI'm試圖創建一個查找表在我的ASP.NET MVC4應用與實體框架代碼優先。這是我們的地點,應該有兩個條目。我需要有一些與它們關聯的ID,所以我的軟件表中存儲了一個LocationID。但是,當我創建它們時,會爲軟件表中的每一行創建一個條目。ASP.NET MVC4:如何創建查找表,使條目不重複
這裏是我的軟件類:
public class Software
{
public int Id { get; set; }
public virtual List<SoftwareType> SoftwareTypes { get; set; }
public virtual List<Location> Locations { get; set; }
public virtual List<SoftwarePublisher> Publishers { get; set; }
[Required]
[StringLength(128)]
public string Title { get; set; }
[Required]
[StringLength(10)]
public string Version { get; set; }
[Required]
[StringLength(128)]
public string SerialNumber { get; set; }
[Required]
[StringLength(3)]
public string Platform { get; set; }
[StringLength(1000)]
public string Notes { get; set; }
[Required]
[StringLength(15)]
public string PurchaseDate { get; set; }
public bool Suite { get; set; }
public string SubscriptionEndDate { get; set; }
//[Required]
//[StringLength(3)]
public int SeatCount { get; set; }
}
這裏是我的位置類:
public class Location
{
public int Id { get; set; }
[Required]
[StringLength(20)]
public string LocationName { get; set; }
public virtual Software Software { get; set; }
}
這裏是我的Global.asax調用種子方法:
Database.SetInitializer(new SampleData());
using (var context = new Context())
{
context.Database.Initialize(true);
}
這裏是我的背景:
public class Context : DbContext
{
public DbSet<Software> Software { get; set; }
public DbSet<Location> Locations { get; set; }
public DbSet<SoftwarePublisher> SoftwarePublishers { get; set; }
public DbSet<SoftwareType> SoftwareTypes { get; set; }
public Context()
{
Configuration.ProxyCreationEnabled = false;
}
}
這裏是我的接種:將
public class SampleData : CreateDatabaseIfNotExists<Context>
{
protected override void Seed(Context context)
{
new List<Software> {
new Software {
Title = "Adobe Creative Suite",
Version = "CS6",
SerialNumber = "1234634543",
Platform = "Mac",
Notes = "Macs rock!",
PurchaseDate = "2012-12-04",
Suite = true,
SubscriptionEndDate = null,
SeatCount = 0,
SoftwareTypes = new List<SoftwareType>
{ new SoftwareType { Type="Suite" }},
Locations = new List<Location>
{ new Location { LocationName = "Paradise" }},
Publishers = new List<SoftwarePublisher>
{ new SoftwarePublisher { Publisher = "Adobe" }}},
...other similar rows...
}.ForEach(s => context.Software.Add(s));
base.Seed(context);
context.SaveChanges();
}
因爲我創造的東西像位置的新列表(我需要修復的其他東西一樣SoftwareType和出版商,但讓我們專注於位置),它是在我的位置表中創建一個新行。我如何重構我的類,以便在我的位置表中有兩個條目,然後在我的軟件表中指向這兩個條目之一的ID?請記住我是一個實體框架的新手,所以請儘量明確。謝謝。
有人說片斷請幫助... – sehummel
可以在一個位置有多個軟件或只有一個? –
一個位置可以有多個軟件,是的。 – sehummel