在没有外键引用的实体框架中插入记录

时间:2013-12-23 23:32:51

标签: entity-framework

请参阅下面我的ERD。公司和联系人都可以同时拥有ContactDetails并成为用户。因此,我没有明确定义与这些表的外键关系。我使用UserType(int)来确定它是公司还是联系人,然后将相关ID存储在EntityId字段中。 enter image description here

以下是我用于在数据库中插入新公司的代码段。

    public ActionResult Create(ProjectUser user)
    {                
        if (ModelState.IsValid)
        {
            if (user.UserType == (int)PC.Utils.Enums.UserType.Company)
            {
                Company company = user.GetCompany();            // Get Company UI values from View Model

                ContactDetail detail = user.GetContactDetail(); // Get Contact UI values from View Model
                detail.UserType = (int)UserType.Company;        // bind contact Type to Company Type
                detail.EntityId = company.Id;                   

                User login = user.GetLoginDetails();                    // Get User UI values from View Model
                login.UserType = (int)UserType.Company;                 // bind User Login to Company
                login.EntityId = company.Id;
                login.Password = PC.Utils.Security.GetMD5Hash(login.Password);  // encrypt the password
                db.Companies.Add(company);
                db.ContactDetails.Add(detail);
                db.Users.Add(login);
                db.SaveChanges();


            return RedirectToAction("Index");

        }
        return View(user);
    }

但是,当我检查数据库时,Users和ContactDetails表中的EntityId为0,因为EF没有确定事务中的正确ID。有没有我缺少的东西,或者有更好的方法来实现这一目标?

0 个答案:

没有答案