Я использую vs2013 и используя asp.net mvc 5 для создания своего веб-приложения. чтобы сделать индивидуальную аутентификацию, я использую Идентификатор 2.0.
, когда я создал мой Entitymodel.edmx, он автоматически генерируется новая строка подключения к моей БД в web.config, как здесь:Подключить ASP.net Identity 2.0 к уже существующей базе данных
<add name="myEntities" connectionString="metadata=res://*/Models.mEntity.csdl|res://*/Models.mEntity.ssdl|res://*/Models.mEntity.msl;provider=System.Data.SqlClient;provider connection string="data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\Shop.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
я полагаю Идентичность использует код первого подхода к мак базы данных и подключается к другая строка подключения (DefaultConnection), как:
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-testauthentication-20151116011628.mdf;Initial Catalog=aspnet-testauthentication-20151116011628;Integrated Security=True"
providerName="System.Data.SqlClient" />
так как результат, когда я первый запустить проект создает новый файл .mdf с именем
САШ-testauthentication-20151116011628.mdf
и создавать таблицы в ней. но я хочу сделать Идентификатор подключитесь к моему уже созданному db по имени: Shop.mdf и создайте в нем свою таблицу. поэтому я кладу имя соединения строки в ApplicationDbContext
классе в IdentityModel.cs, как здесь:
public ApplicationDbContext()
: base("myEntities", throwIfV1Schema: false)
{
}
, но я получаю следующее сообщение об ошибке:
Тип объект ApplicationUser не является частью модели для тока контекст.
так что это правильный и правильный способ сделать это?
Большого спасибо
UPDATE:
я создал таблицу идентичности в точности с тем же именем в моих существующих базах данных и DefaultConnection для подключения к существующей базе данных, и теперь я получаю эту ошибку:
Невозможно создать файл 'c: \ users \ mohamad \ documents \ visual studio 2013 \ Projects \ Shop \ Shop \ App_Data \ Shop.mdf', потому что он уже существует. Измените путь к файлу или имя файла и повторите операцию. CREATE DATABASE не удалось. Некоторые имена файлов не могут быть созданы.
Почему, когда в нем есть база данных и даже таблица, личность пытается создать базу данных?
Решение:
пункт 1: кажется, личность не имеет проблем с подключением к уже существующей базе данных, он может хорошо Подключается к ней и создает это таблица на нем.
пункт 2: проблема я имел: я не знаю, что было причиной моей проблемы, но я сделал следующие шаги и проблемы решены:
- удалить всю таблицу из модели.EDMX
- удалить model.edmx
- модель возрожденного EDMX и строку соединения, а также, то я добавил таблицы к нему
- DefalutConnection строки точек точно таким же .mdf файл, который строка Entity Connection делать.
- запустить проект и зарегистрироваться, и все идет хорошо.
- начальный каталог в строке подключения должен быть заполнены
, если вам нужно добавить еще одно свойства в дополнении к существующему свойству идентичности как имя, город и .... сделай следующий шаг и бег проект и зарегистрировать:
в
IdentityModel.cs
файл добавить свойства вApplicationUser
класс:public class ApplicationUser : IdentityUser { public string Adress { get; set; } public DateTime DateOfBirth { get; set; } .... }
- в
AccountViewModel.cs
вRegisterViewModel
классе добавить точно такое же свойство и присвоить их атрибут, как[Requierd]
в
AccountController.cs
вRegister
действии добавить свойства, как это:var user = new ApplicationUser() { UserName = model.Email, Email = model.Email ,Adress=model.Adress};
добавить связанный html в регистр просмотра
веселит
Был другой проект в asp.net (not mvc) я использовал Identity for Authentication, и я просто установил connectionsting: 'UserStore userStore = новый UserStore (); userStore.Context.Database.Connection.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings ["ConnectionString"]. ConnectionString; 'и identity генерируют таблицу в мою базу данных. я просто хочу, чтобы они были в моем существующем db не в модели .edmx, я уверен, что должен быть способ –