Подтвердить что ты не робот

EntityType 'MyProfile' не имеет ключа. Определите ключ для этого EntityType

Я не уверен, почему я получаю это сообщение об ошибке. У меня есть первичный ключ, определенный в моей базе данных sql для него. Вот мой код:

[HttpPost]
    public ActionResult Register(RegisterModel model)
    {
        if (ModelState.IsValid)
        {
            // Attempt to register the user
            MembershipCreateStatus createStatus = MembershipService.CreateUser(model.UserName, model.Password, model.Email);

            if (createStatus == MembershipCreateStatus.Success)
            {

                FormsService.SignIn(model.UserName, false /* createPersistentCookie */);
                MembershipUser myObject = Membership.GetUser();
                Guid UserID = (Guid)myObject.ProviderUserKey;
                MyProfile profile = new MyProfile();
                profile.Address = model.Address;
                profile.City = model.City;
                profile.Zip = model.Zip;
                profile.State = model.State;
                profile.UserId = UserID;
                db.Profiles.Add(profile);
                return RedirectToAction("Index", "Home");
            }
            else
            {
                ModelState.AddModelError("", AccountValidation.ErrorCodeToString(createStatus));
            }
        }

        // If we got this far, something failed, redisplay form
        ViewBag.PasswordLength = MembershipService.MinPasswordLength;
        return View(model);
    }

И это мой класс MyProfile:

   namespace MatchGaming.Models
{
    [Bind(Exclude = "ProfileId")]
    public class MyProfile
    {
        [ScaffoldColumn(false)]
        public int ProfileId { get; set; }

        public Guid UserId { get; set; }

        [DisplayName("Address")]
        public string Address { get; set; }

        [DisplayName("City")]
        public string City { get; set; }

        [DisplayName("Zip")]
        public string Zip { get; set; }

        [DisplayName("State")]
        public string State { get; set; }


    }
}

Я не уверен, почему я получаю эту ошибку: EntityType 'MyProfile' has no key defined. Define the key for this EntityType., когда он пытается добавить в базу данных db.Profiles.Add(profile);.

4b9b3361

Ответ 1

Какое поле является вашим ключом? Какой бы он ни был - ProfileId или UserId - либо измените имя на MyProfileId, либо Id, либо поместите на него атрибут [Key].

Ответ 2

Я тоже столкнулся с этой проблемой и хотел добавить, что в Entity Framework версии 6 эта ошибка возникает из-за того, что тип DbgGeography был перемещен из сборки system.data.entity и в файл entityframework.dll

чтобы решить эту проблему в EF 6+, удалите ссылку на DLL-объект и измените оператор using используя System.Data.Entity.Spatial

см. этот http://entityframework.codeplex.com/workitem/1535