sql-server - Insert 语句与 FOREIGN KEY 约束冲突。 Entity Framework

标签 sql-server asp.net-mvc entity-framework

我的模型如下...

public class Company
{


    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid Id { get; set; }

    [Required]
    [MaxLength(50)]
    public string Name { get; set; }

    [Required]
    [MaxLength(255)]
    public string Fullname { get; set; }

    public bool HasFuneralInsuranceParlours { get; set; }
    public bool HasFuneralInsurancePolicies { get; set; }
    public bool HasLifeInsurancePolicies { get; set; }


    public bool IsDeleted { get; set; }

    public virtual List<Office> Offices { get; set; }
}


public class Office
{

   [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid Id { get; set; }

    [MaxLength(50)]
    public string Name { get; set; }

    [MaxLength(100)]
    public string Address1 { get; set; }

    [MaxLength(100)]
    public string Address2 { get; set; }

    [MaxLength(100)]
    public string Address3 { get; set; }

    [MaxLength(20)]
    public string Telephone { get; set; }

    [MaxLength(20)]
    public string Fax { get; set; }

    [MaxLength(255)]
    public string Email { get; set; }

    public bool IsDeleted { get; set; }

    public Guid CompanyId { get; set; }
    public virtual Company Companies { get; set; }

    public virtual List<Employee> Employees { get; set; }

}

和 Controller

 [HttpPost]
 [ValidateAntiForgeryToken]
 public ActionResult Create(OfficeModel model)
    {

        bool success = false;
        string message = "";
        byte[] logo = null;

        var user = SecurityHelper.GetAuthenticatedUser(this.HttpContext);
        try
        {

            if (ModelState.IsValid)
            {
                if (model.Name.IsNullOrWhitespace()) throw new Exception("Unable to create this Employee Name. The Type cannot be blank or spaces.");
                if (models.Offices.Any(x => x.Name.ToLower() == model.Name.ToLower())) throw new Exception(string.Format("This Office's Name '{0}' already exists. Please check your data.", model.Name.ToUpperCase()));


                var entry = new Office
                {
                    Id  = Guid.NewGuid(),
                    Name = model.Name.ToUpperCase(),
                    Address1 = model.Address1.ToUpperCase(),
                    Address2 = model.Address2.ToUpperCase(),
                    Address3 = model.Address3.ToUpperCase(),
                    Telephone = model.Telephone.ToUpperCase(),
                    Fax = model.Fax.ToUpperCase(),
                    Email = model.Email.ToUpperCase(),
                    IsDeleted = false,
                    CompanyId = user.CompanyId,

                    Bankings =  new List<Banking>()
                    {
                        new Banking
                        {
                            Bank = model.OfficeBank.ToUpperCase(),
                            Account = model.BankAccount.ToUpperCase(),
                            Branch = model.Branch.ToUpperCase(),
                            BranchNo = model.BranchNo.ToUpperCase(),
                            AccountType = model.AccountType.ToUpperCase()
                        }
                    }
                };
                models.Offices.Add(entity);
                success = true;
                return RedirectToAction("Index");
            }
            else
            {
                message = "An error was cought please check your data and retry";
            }
        }
        catch (Exception ex)
        {
            message = ex.Message;
        }

        return View(model);
    }

当我调试上面的代码时,我返回以下错误

"The INSERT statement conflicted with the FOREIGN KEY constraint \"FK_dbo.Offices_dbo.Companies_CompanyId\". The conflict occurred in database \"PolicyManager\", table \"dbo.Companies\", column 'Id'.\r\nThe statement has been terminated."

当我悬停 model.Name 时,我返回一个值,但其余的返回一个空值,我怀疑这是导致上述错误的原因。

这可能是什么问题,因为我之前使用过类似的代码并且它有效。愿任何人帮忙。预先感谢您

最佳答案

您正在添加一个新办公室。

该错误表明 Company 表的外键约束存在引用完整性问题。

当您创建订单时,您添加以下公司 key :

CompanyId = user.CompanyId

看来 user.CompanyId 不是针对现有公司注册的 ID。

关于sql-server - Insert 语句与 FOREIGN KEY 约束冲突。 Entity Framework ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20539408/

相关文章:

database - 代码优先迁移——真的有必要吗?

entity-framework - 在 Windows Azure 上将 SQL Server CE 4.0 与 Entity Framework 结合使用

asp.net - 如何在 css 中本地化内容 block ?

c# - 规范函数 "EntityFunctions.TruncateTime"在 MYSQL 中不存在

sql-server - Entity Framework 6.1 : The given key was not present in the dictionary

sql-server - ISNULL() 返回 NULL

sql-server - SQL Server 2017安装卡住了

c# - 类型 'Microsoft.SqlServer.Types.SqlGeography' 存在于 'Microsoft.SqlServer.Types.dll' 和 'Microsoft.SqlServer.Types.dll' 中

c# - 使用 MySql 数据库的 MVC 4 中 Entity Framework Code First 中的 Crud 操作

mysql - 带有 MySQL 的 ASP.NET MVC 4 EF5