Ссылка на пользователя, который был создан с поставщиком членства по умолчанию в ASP.NET MVC3 в таблице, расположенной в другой базе данных? - PullRequest
1 голос
/ 07 марта 2012

Чтобы сослаться на внешний ключ в таблице, я использую следующий код:

public class MyClass
{
    public int ExampleID { get; set; }
    public virtual Example Example { get; set; }
}

Как бы я сослался на пользователя в рамках поставщика членства по умолчанию, который используется в MVC 3 ASP.NET?

Я бы подумал, что это будет так просто:

public class MyClass
{
    public int UserID { get; set; }
    public virtual User User { get; set; }
}

.,,но я не знаю, как конкретно ссылаться на пользователя (нет класса «Пользователь», я знаю, что есть классы для LogOnModel и RegisterModel - но они не имеют прямой ссылки на самого пользователя).

Как бы я смог выполнить эти отношения в своей таблице?

Подхожу ли я к ситуации таким образом, который считается нетрадиционным?

(Чтобы было ясно: я хочу сделатьотношения между пользователем, который был создан с использованием поставщика членства по умолчанию, и таблицей в моей собственной базе данных)

1 Ответ

2 голосов
/ 07 марта 2012

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

Вместо этого вы должны сделать что-то вроде этого:

from d in dc.MyClasses where d.UserID == Membership.GetUser().ProviderUserKey select d

Чтобы выяснить, какиеПользователь связан с вашими данными.Вам необходимо добавить столбец uniqueidentifier в ваш класс, затем при создании MyClass вы добавляете пользователей ProviderUserKey.Затем, когда вы получаете MyClass, вы ищете пользователя по ключу через членский API.

РЕДАКТИРОВАТЬ:

Я не заметил ту часть, где вы сказали другую базу данных.Как я уже сказал в своем комментарии, Entity Framework не поддерживает таблицы сопоставления в других базах данных.Это только одна база данных.Можно создать представления, которые сопоставляются с другой базой данных, а затем сопоставить эти представления с вашими, но вам необходимо управлять всеми отношениями вручную, и это будет доступно только для чтения.

Самый простой способ получить доступ к членствуДанные в другой базе данных должны указывать провайдеру данных о членстве в этой базе данных (у провайдеров API членства есть строки подключения, отличные от данных вашей EF), а затем использовать методы, которые я упоминал выше.

...