Строки подключения MVC4 SimpleMembership

У меня есть проект DB First EF5, в котором я внедряю SimpleMembership. У меня большая часть работает, но возник вопрос.

В основной таблице пользователей, созданной Simple Membership, есть имя пользователя. У меня есть пара других мест в приложении, где мне нужно запросить эту таблицу, в частности имя пользователя. Простое членство не использует Data.EntityClient в строке подключения, поэтому я установил для него значение SqlClient.

Поэтому, поскольку у меня нет модели объекта с таблицей пользователей поставщика, я не знаю, как ее запросить. Обычно я создаю экземпляр модели объекта и использую для него LINQ, но когда я пытаюсь это сделать, я получаю очень длинную ошибку о смешивании кода сначала с объектом. Я изменил «initialSimpleMembershipAttribute», чтобы он указывал на отдельную строку подключения, которую я создал для таблиц членства.

Одно из решений, о котором я подумал, состояло в том, чтобы сохранить пользователя, затем скопировать имя пользователя в одну из моих пользовательских таблиц, затем я могу запросить его через EF, но похоже, что это нарушит какую-то «лучшую практику» базы данных дублированных данных.

Еще одна идея, которая у меня была, — создать вторую модель edmx для таблиц, созданных Membership, но если SimpleMembership не использует EntityClient, значит ли это, что он также не распознает модель сущности?


person BattlFrog    schedule 12.05.2013    source источник


Ответы (1)


Вы слишком все усложняете.

Если у вас есть собственная модель, то вы можете просто избавиться от модели, которую дает вам шаблон по умолчанию, и использовать вместо нее свою. Неважно, сначала код или база данных или что-то еще. Просто измените Initialize SimpleMembershipAttribute, чтобы удалить ссылки на модель по умолчанию, которую они вам дают, и убедитесь, что вы правильно изменили вызов InitializeDatabaseConnection.

WebSecurity.InitializeDatabaseConnection("YourConnection", "WhateverYouCallYourUserTable", 
    "WhateverYourUserIdIs", "WhateverYourUserNameColumnIs", autoCreateTables: true);
person Erik Funkenbusch    schedule 12.05.2013
comment
Хорошо, я могу это сделать. Но мне все еще нужны отдельные строки подключения, верно? - person BattlFrog; 13.05.2013
comment
@teahou - я не понимаю, что вы подразумеваете под отдельными строками подключения. Если у вас есть собственная база данных и модель, у вас есть только одна строка подключения. - person Erik Funkenbusch; 13.05.2013
comment
Одна для таблиц simplemembership, которая использует поставщика System.Data.SqlClient, и одна для модели сущностей, которая содержит все остальные мои таблицы и использует System.Data.EntityClient. Это согласно этому сообщению: stackoverflow.com/ вопросы/12575311/. Мое первоначальное мнение было, как вы заявили, что это не должно быть так сложно. Пожалуйста, дайте мне знать, как я могу упростить это так называемое простое членство. - person BattlFrog; 13.05.2013
comment
@teahou - Ааа .. да, у вас просто две строки подключения, которые указывают на одну и ту же базу данных. - person Erik Funkenbusch; 13.05.2013
comment
Итак, это возвращает нас к исходному вопросу: у меня тоже должно быть 2 модели edmx? Если нет, то как мне запросить таблицы, используя соединение system.data.sqlclient? - person BattlFrog; 13.05.2013