Итак, во-первых, я не знаю, какую версию Entity Framework я использую.Я предполагаю, что его 4, но как я могу проверить?
Во-вторых, у меня есть следующая строка подключения в web.config:
<connectionStrings>
<add name="DBEntites"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
<add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
Как вы можете видеть, это одна и та же БД.Фактически это БД, созданная поставщиком членства asp.net.
Теперь у меня есть следующая модель:
public class Profile {
[Key]
public string username { get; set; }
[Display(Name = "Full Name")]
public string FullName { get; set; }
}
Достаточно просто?
Тогда у меня есть следующий класс, который подключается к БД:
public class DBEntities : DbContext {
public DbSet<Profile> Profiles { get; set; }
}
Затем в моем контроллере учетных записей, на самом деле, это тот же контроллер, созданный VS2010 при выборе нового проекта MVC3.
[HttpPost]
public ActionResult Register(RegisterModel model) {
if (ModelState.IsValid) {
// Attempt to register the user
MembershipCreateStatus createStatus;
Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);
Profile pm = new Profile();
pm.username=model.UserName;
pm.FullName="unknown";
db.Profiles.Add(pm);
db.SaveChanges();
if (createStatus == MembershipCreateStatus.Success) {
FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
return RedirectToAction("Index", "Home");
} else {
ModelState.AddModelError("", ErrorCodeToString(createStatus));
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
ТАК, когда я запускаю это приложение, оно запускается без исключений.Если я добавлю нового пользователя, новый пользователь будет добавлен в таблицы членства asp.net.Поэтому, насколько я понимаю, платформа Entity должна создать таблицу с именем «Профиль» с двумя столбцами «имя пользователя» и «полное имя».
Однако это не так.Почему код может проходить без исключений, может проходить db.SaveChanges()
, а таблица еще не создана?
Что я делаю не так?
edit: Я думаю, что таблица существует, потому что, если я пытаюсь создать запись с тем же именем пользователя (очевидно, не могу, так как это первичный ключ), она выдает исключение, сообщающее, что запись уже существует.
НО я не могу найти стол!