Zdravím, mám takový problém a už moc nevím, pročpak to tak je.. :-) Mám Nějaký
BaseDBContext<T> : DbContext
where T : class, IUser<int>
{
}
kde mám konfiguraci pro T:
public class TConfiguration<T> : EntityTypeConfiguration<T>
where T : class, IUser<int>
{
public UserConfiguration()
{
HasKey(x=>x.Id).Property(x=>x.Id)....;
}
}
Kdo neví, tak IUser<int> je interface z Identity frameworku:
public interface IUser<out TKey>
{
/// <summary>
/// Unique key for the user
///
/// </summary>
TKey Id { get; }
/// <summary>
/// Unique username
///
/// </summary>
string UserName { get; set; }
}
Odtamtud je to Id.... Nyní ale, když si implementuju toto rozhraní jako:
public class TTest : IUser<int>
{
public int Id { get; set; }
}
a zároveň si podědim můj db context..
public class TestDBContext : BaseDBContext<TTest>
{
public TestDBContext()
: base("DefaultConnection")
{
}
}
Tak jsem očekával,.. že se mi zavolá OnModelCreating toho BaseDBContextu.. což se samozřejmě děje.. problémem je, že mi EF vyhodí při vytváření modelu exception, že nemůže použít propertu Id, jelikož to není scalární typ / string /byte[]... Přitom při breakpointu je jasné, že se jedná o int...: Viz obrázek: http://imgur.com/LQyIQBo Ještě dodám, že i v základní šabloně vygenerované od VSka s individual accounts dělají defakto téměř to samé.. Bohužel při decompilu IdentityDbContext<TUser...> mi není schopný resharper konfigurační část správně decompilnout.. Tušíte někdo? :-)
|