【发布时间】:2012-03-15 00:35:37
【问题描述】:
谁能帮我定义使用 EF 4.3 的关系映射。尝试先在代码中对其进行建模时,我有点迷茫
逻辑在这里。
- 一个城市有 1 个或多个位置(例如 1 区、CBD、南、北)
- 一个位置有 0 个或多个场地
- 场地可能属于 1 个地点(例如纽约 CBD 或纽约南部),或者如果城市较小且没有任何地点(例如夏威夷)和 1 个所有者,则属于 1 个城市
- 显示市内场馆编号。如果一个城市有位置,则显示没有。所有地点的所有场地都属于城市。否则显示场馆数量仅属于该城市。
这是我的模型
public class City
{
private ICollection<Location> _locations;
private ICollection<Venue> _venues;
public virtual int ID { get; set; }
public virtual string Name { get; set; }
public virtual ICollection<Location> Locations
{
get { return _locations ?? (_locations = new List<Location>()); }
protected set { _locations = value; }
}
public virtual ICollection<Venue> Venues
{
get { return _venues ?? (_venues = new List<Venue>()); }
protected set { _venues = value; }
}
}
public class Location
{
private ICollection<Venue> _venues;
public virtual int ID {get;set;}
public virtual string Name { get; set; }
public virtual int CityID{get;set;}
public virtual City City {get;set;}
public virtual ICollection<Venue> Venues
{
get { return _venues ?? (_venues = new List<Venue>()); }
protected set { _venues = value; }
}
}
public class Owner
{
public virtual int ID {get;set;}
public virtual string Name { get; set; }
public virtual int VenueID {get;set;}
public virtual Venue Venue {get;set;}
}
public class Venue
{
public virtual int ID {get;set;}
public virtual string Name { get; set; }
public virtual int LocationID {get;set;}
public virtual Location VenueLocation {get;set;}
public virtual int VenueCityID{get;set;}
public virtual City VenueCity {get;set;}
public virtual int VenueOwnerID{get;set;}
public virtual Owner VenueOwner {get;set;}
}
我尝试映射这些模型,但在尝试映射 Location、City 和 Venue 时非常混乱
public class Context : DbContext
{
public DbSet<City> City{ get; set; }
public DbSet<Locations> Locations{ get; set; }
public DbSet<Owner> Owners{ get; set; }
public DbSet<Venue> Venues{ get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Location>()
.HasRequired(loc => loc.City)
.WithMany(c => c.Locations)
.HasForeignKey(loc => loc.CityID);
modelBuilder.Entity<Venue>()
.HasRequired(v => v.VenueOwner)
.WithRequiredPrincipal();
//confusing here when trying to map Location & City for this venue
modelBuilder.Entity<Venue>()
.HasRequired(v => v.Location)
.WithRequiredPrincipal();
modelBuilder.Entity<Venue>()
.HasRequired(v => v.City)
.WithRequiredPrincipal();
}
}
【问题讨论】:
标签: c# frameworks entity