Bil*_*ani 9 c# database asp.net orm entity-framework
我想做这样的事情:
public class TrackerContext : DbContext
{
public bool TrackNewValues { get; set; }
public TrackerContext(bool trackNewValues = false)
: base()
{
TrackNewValues = trackNewValues;
}
public TrackerContext(string connectinString, bool trackNewValues = false)
: base(connectinString)
{
TrackNewValues = trackNewValues;
}
public DbSet<AuditLog<string>> AuditLog { get; set; }
public DbSet<AuditLogChild> LogChildren { get; set; }
}
public class AuditLog<UserIdOrUserNameColumnType>
{
public AuditLog()
{
Children = new List<AuditLogChild>();
}
[Key]
public Guid AuditLogID { get; set; }
public UserIdOrUserNameColumnType UserId { get; set; }
[Required]
public DateTimeOffset EventDateUTC { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但我猜DbSet<AuditLog<string>>
不支持.我收到此错误:
附加信息:未映射类型'TrackerEnabledDbContext.AuditLog`1 [System.String]'.使用Ignore方法或NotMappedAttribute数据批注检查未明确排除类型.验证类型是否已定义为类,不是原始类型还是通用类型,并且不从EntityObject继承.
我有什么方法可以实现public DbSet<AuditLog<string>> AuditLog { get; set; }
吗?
我一直在Entity Framework中成功使用泛型类.如果以下列方式声明您的类和DbSet,它将起作用.
public class AuditLogString : AuditLog<String>{}
public DbSet<AuditLogString> AuditLogStrings { get;set;}
Run Code Online (Sandbox Code Playgroud)
[更新]我最近没有使用过这种方法,根据对这个答案的评论,我建议Pawel的回答.但是我没有删除这个答案,因为我能够使用该方法.
归档时间: |
|
查看次数: |
12185 次 |
最近记录: |