c# - the - EntityType ''MyProfile'' no tiene una clave definida. Definir la clave para este EntityType
define the key for this entitytype mvc 5 (2)
¿Cuál campo es tu clave? Cualquiera que sea - ProfileId o UserId - cambie el nombre a MyProfileId o Id o ponga un atributo [Key] en él.
No estoy seguro de por qué estoy recibiendo este mensaje de error. Tengo una clave principal definida en mi base de datos sql para ello. Aquí está mi código:
[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);
}
Y esta es mi clase 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; }
}
}
No estoy seguro de por qué recibo este error: EntityType ''MyProfile'' has no key defined. Define the key for this EntityType.
EntityType ''MyProfile'' has no key defined. Define the key for this EntityType.
cuando intenta agregar a la base de datos db.Profiles.Add(profile);
.
Me encontré con este problema también y quería agregar que en Entity Framework versión 6 este error se produce porque el tipo DbgGeography se ha movido del ensamblado system.data.entity y en el entityframework.dll
para resolver esto en EF 6+ elimine la referencia a la entidad dll y cambie la instrucción using a System.Data.Entity.Spatial