gpt4 book ai didi

c# - Entity Framework saveChanges 不适用于某些实体

转载 作者:太空宇宙 更新时间:2023-11-03 13:20:39 24 4
gpt4 key购买 nike

我有这个数据库结构:

User
Company
CompanyUser

CompanyUser 有一个 UserIdCompanyId列和一个 bool 值。

用户实体有这个导航项:

ICollection<CompanyUser> Companies

公司有这个导航项:

ICollection<CompanyUser> Users

公司用户看起来像这样:

public class CompanyUser : BaseEntity
{
/// <summary>
/// Gets or sets if the user is an admin
/// </summary>
public bool IsAdmin { get; set; }

/// <summary>
/// gets or sets the company id
/// </summary>
public Guid? CompanyId { get; set; }

/// <summary>
/// gets or set the user id
/// </summary>
public Guid? UserId { get; set; }

public User User { get; set; }
public Company Company { get; set; }
}

我可以创建一个 User和一个 Company实体并将它们插入到数据库中。但是当我创建一个 CompanyUser像这样它根本不会插入。

User user = new User();
// Set properties
_userService.InsertUser(user);

Company company = _companyService.GetCompanyById(i);
CompanyUser companyUser = new CompanyUser()
{
IsAdmin = true,
CompanyId = company.Id,
UserId = user.Id
};

_companyService.InsertCompanyUser(companyUser);

我不明白为什么这不插入。我调试了它,没有抛出或捕获我不知道的异常。当我查看 companyUser 包含的内容时,它看起来非常完美。

SaveChanges()返回 0每个CompanyUser变化和 Entities'计数始终为 0

在过去的几个小时里,这个 Entity Framework 一直在困扰着我,我似乎无法理解这个框架。我做错了什么?

更新

这是 InsertCompanyUser

try
{
if (entity == null)
throw new ArgumentNullException("entity");

this.Entities.Add(entity);
this._context.SaveChanges();
}

this.Entities是一个 IDbSet<T>

我的数据库上下文扩展了 DBContext 并且有这个方法:

public new IDbSet<TEntity> Set<TEntity>() where TEntity : BaseEntity
{
return base.Set<TEntity>();
}

更新 2

DbSet对于 CompanyUser始终保留计数 0 并且从不增加但是 CompanyUser DbSet s 正在增加,因为他们应该。为什么 DbSet 在调用 Add 时不会增加

最佳答案

检查您的对象模型是否正在生成使用主键/外键正确关联的表,然后尝试这种方法:

User user = new User();
// Set properties

Company company = _context.Companies.Find(i);
CompanyUser companyUser = new CompanyUser()
{
IsAdmin = true,
User = user
};

company.Users.Add(companyUser);
_context.SaveChanges();

关于c# - Entity Framework saveChanges 不适用于某些实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24375255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com