Tag: 多对多

EF Core中的多对多关系映射

我在EF核心中存在多对多关系的问题。 我有以下模型类: public class Meal { public int Id { get; set; } [Required] public int Insulin { get; set; } public MealType Type { get; set; } public ICollection MealFoods { get; set; } public Meal() { MealFoods = new Collection(); } } public class Food { public int Id { get; set; } […]

删除多个到多个entity framework

Artist和ArtistType之间存在多对多的关系。 我可以轻松添加艺术家ArtistType如下所示 foreach (var artistType in this._db.ArtistTypes .Where(artistType => vm.SelectedIds.Contains(artistType.ArtistTypeID))) { artist.ArtistTypes.Add(artistType); } _db.ArtistDetails.Add(artist); _db.SaveChanges(); 这将使用正确的映射更新多对多关联表。 但是,当我尝试从表中删除任何项目时,我没有得到任何错误,但它没有从表中删除它? foreach (var artistType in this._db.ArtistTypes .Where(at => vm.SelectedIds.Contains(at.ArtistTypeID))) { artistDetail.ArtistTypes.Remove(artistType); } this._db.Entry(artistDetail).State = EntityState.Modified; this._db.SaveChanges(); 我错过了什么?

MVC 4 – 多对多关系和复选框

我正在使用ASP.NET MVC 4和Entity Framework。 在我的数据库中,我有一个表Subscription ,表示对公共传输的订阅。 这个订阅可以提供对几个公共交通公司的访问(因此订阅可能有1,2,3,……公司),然后这些表之间是多对多关系(我之间有一个中间表)。 我想允许通过一个页面创建订阅,该页面将包含一个字段的订阅金额和可用的公司复选框。 每个复选框代表一个现有公司(存储在我的数据库中的公司)。 有关如何做到这一点的任何想法? 我已经阅读了这个ASP.NET MVC多重复选框,但它并没有真正帮助。 编辑:这是我的表格图。

Automapper – 将多对多关联映射到平面对象的最佳实践

我有两个实体: Employee和Team 。 我想要的是一个拥有Team Name的EmployeeForm 。 如何使用AutoMapper实现此目的? 我目前的“解决方案”如下: Mapper.CreateMap() .ForMember(dest => dest.TeamName, opt => opt.MapFrom(x => x.GetTeams().FirstOrDefault() != null ? string.Join(“, “, x.GetTeams().Select(y=>y.Name)) : “n/a”)); 在我看来,这是可读的。 我想要的是一个generics方法,我可以传递一个实体,选择集合并说集合是否为null返回默认值,或者通过lambda表达式选择集合的属性。

将多个实体插入到多对多链接表中

我的Web应用程序在Station和Timetable实体之间具有多对多链接,并且链接它们的实体称为StationTimetable ,它还保存有关两个实体之间链接的数据。 当我创建一个新的Timetable ,我想在数据库中创建新的(和多个) StationTimetable条目以对应这个新的Timetable 。 到目前为止,我已经设法让应用程序在用户创建新的时间表时只保存一个StationTimetable条目。 我有点理解为什么会这样,并且我试图修改它以保存多个条目,但是我现在正在知道这个砖墙。 所以,我有一个TimetablesCreateViewModel ,它是我的视图使用的模型: public class TimetablesCreateViewModel { public Timetable Timetable { get; set; } public IEnumerable StationTimetables { get; set; } public Station Station { get; set; } public SelectList StationList { get; set; } } 在我看来,我让用户最多插入10个StationTimetable条目: @for (var i = 0; i < 10; i++) { @Html.DropDownListFor(model […]

同时使用多对多和一对多同一实体

我在EF Code-First中有一个多对多的关联(正如本问题中所解释的那样),我想对同一个实体使用一对多关系。 问题是EF没有产生正确的数据库方案。 码: public class A { public int Id { get; set; } public string Name { get; set; } public virtual ICollection ObjectsOfB { get; set; } } public class B { public int Id { get; set; } public virtual A ObjectA { get; set; } public virtual ICollection OtherObjectsOfA { […]

EF Core – 课堂上的多对多关系

用户友情关系 我找到了答案 entity framework核心:与同一实体的多对多关系,并尝试这样做。 实体来说: public class User { public int UserId { get; set; } public virtual ICollection Friends { get; set; } } public class Friend { public int MainUserId { get; set; } public User ManUser { get; set; } public int FriendUserId { get; set; } public User FriendUser { get; […]

entity framework将记录添加到多对多的映射表中

我有3张桌子, 1)客户(Id,Name,bla bla) 2)CustomerGroups(GroupId,GroupName) 3)CustomerInGroups(CustomerId,GroupId) using (var context = DataObjectFactory.CreateContext()) { context.Customers.Add(entity); context.SaveChanges(); return entity.Id; } 如何在CustomerInGroups中添加记录? EntityFramework不会为这样的多对多映射表生成实体 编辑: Customer和CustomerGroups中的Id列都设置为自动增量。 所以在我的CustomersGroup表中,我有 Id Name —————————- 1 Normal 2 VIP 我尝试这样做,因为其中一张海报建议: entity.CustomerGroups = new List { new CustomerGroup {Id = 2 } }; context.Customers.Add(entity); context.SaveChanges(); return entity.Id; 但是,当我这样做时,而不是像这样在映射表中创建一条记录: CustomerId GroupId —————————- 1 2 我得到的是 CustomerInGroups CustomerId GroupId […]

如何在代码中建模多对多关系?

假设我在数据库中有2个表。 例如:Dog&Boss这是一个多对多的关系,因为老板可以拥有超过1只狗,而一只狗可以有超过1只拥有者。 我是Bobby的老板,但我的妻子也是。 但是很多人不允许这样做,所以有一个很好的帮助:DogsPerBoss 如何在代码中建模? class老板可以拥有一系列狗。 Class Dog可以拥有一系列老板。 – >至少,这就是我的想法。 也许有更好的解决方案? 辅助表中的额外数据怎么样? 这应该是de Boss-class还是Dog-class? 例如:昵称(我叫狗“好孩子”,我的妻子称他为“小狗”) 我希望我的问题有点清楚吗? 有什么最好的方法来实现这个目标是什么? 你能给我一些参考吗? ORM(如NHibernate)不是一个选项。

流畅的nhibernate – 在同一实体上的多对多关系映射

我在尝试绘制多对多关系时遇到问题,其中关系的两侧都引用同一个实体。 我正在使用Fluent NHibernate和NH3.1。 基本上,情况是这样的 – 我有一个类别,可以有多个父母。 因此,一个类别有多个其他类别作为父类,以及多个其他类别作为其子类。 HasManyToMany(x => x.ParentCategories).AsBag().Table(“parentcategorychildren”).ParentKeyColumn(“ChildID”).ChildKeyColumn(“ParentID”).Cascade.SaveUpdate(); HasManyToMany(x => x.ChildrenCategories).AsBag().Table(“parentcategorychildren”).ParentKeyColumn(“ParentID”).ChildKeyColumn(“ChildID”).Inverse(); 但是,当我尝试构建工厂时,我收到以下错误: Category.ChildrenCategories与Category.ChildrenCategories的关系在双方都指定了Inverse。 从关系的一侧移除反向。 我发现奇怪的是为什么它提到Category.ChildrenCategories的“Category.ChildrenCategories”,而不是ParentCategories? 任何帮助将不胜感激 ! 我刚刚为此创造了一笔赏金,因为它对我来说非常重要。 拜托,我对“你不能这样做”作为答案不感兴趣。