Так у меня есть следующая модель в EF:EF6 Code First многие-ко-многим без коллекций
public class User: IEntity
{
public Guid Id { get; protected set; }
public string Email { get; protected set; }
internal User()
{
}
public User(Guid id, string email)
{
Id = id;
Email = email;
}
}
public class Tenant : IEntity
{
public Guid Id { get; protected set; }
public string Name { get; protected set; }
internal Tenant() { }
public Tenant(Guid id, string name)
{
Id = id;
Name = name;
}
}
Я хотел бы иметь многие-ко-многим между этими структурами, не имея коллекции в них.
Я попытался создать присоединиться объект как:
public class TenantUser
{
public int Id { get; set; }
public virtual Tenant Tenant { get; set; }
public virtual User User { get; set; }
internal TenantUser()
{
}
public TenantUser(Tenant tenant, User user)
{
this.Tenant = tenant;
this.User = user;
}
}
С следующей установкой:
modelBuilder.Entity<TenantUser>()
.HasRequired<Tenant>(m => m.Tenant)
.WithMany();
modelBuilder.Entity<TenantUser>()
.HasRequired<User>(m => m.User)
.WithMany();
Когда я сохранить объекты TenantUser, база данных заполняется с правильными внешними ключами. Когда я запрашиваю DbSet TenantUser для всех строк, он возвращает все строки, но я получаю только заполненное значение Id, Tenant и User равны нулю.
Я попытался добавить поля TenantId и UserId в TenantUser, а затем сделать HasForeignKey для этих полей, но это не имело никакого значения; TenantId и UserId были заполнены по запросу, но Tenant и User по-прежнему были нулевыми.
Я чувствую, что мне не хватает чего-то простого здесь. Любые мысли было бы здорово :)
Im немного не уверены, что отношения вы пытаетесь создать здесь? Можете ли вы описать отношения, которые вы используете в словах, или, возможно, если их более простой пост DB-диаграммы отношений. –
Проблема, вероятно, заключается в том, что вы не включаете «Пользователь» и «Арендатор» при запросе таблицы (а не в самой конфигурации). Я не уверен, что это можно настроить, но попробуйте выполнить запрос с помощью 'ctx.TenantUsers.Include (tu => tu.Tenant) .Include (tu => tu.User)'. – Alxandr
Это довольно неясно. Что вы хотите, чтобы многие из многих не имели коллекций? Каким другим способом можно ссылаться на объект, который имеет отношение ко многим другим элементам, чем к другим элементам в какой-либо коллекции? – Claies