C# 使用错误列名的实体框架

C# 使用错误列名的实体框架,c#,asp.net,entity-framework,asp.net-identity,C#,Asp.net,Entity Framework,Asp.net Identity,我正在扩展IdentityUser,在运行时EF似乎猜错了键的列名 public class Account : IdentityUser { public virtual ICollection<Organization> OrgMembership { get; set; } } 公共类帐户:IdentityUser { 公共虚拟ICollection OrgMembership{get;set;} } 我没有在我的类上设置单独的ID列,因为Micro

我正在扩展IdentityUser,在运行时EF似乎猜错了键的列名

public class Account : IdentityUser
{
    public virtual ICollection<Organization> OrgMembership { get; set; }        
}
公共类帐户:IdentityUser
{
公共虚拟ICollection OrgMembership{get;set;}
}
我没有在我的类上设置单独的ID列,因为Microsoft在IdentityUser上已经有了一个

public class Organization
{
    [Key]
    public long Id { get; set; }
    public string Name { get; set; }   
}

...

modelBuilder.Entity<Account>()
            .HasMany<Organization>(a => a.OrgMembership)
            .WithMany();
公共类组织
{
[关键]
公共长Id{get;set;}
公共字符串名称{get;set;}
}
...
modelBuilder.Entity()
.HasMany(a=>a.OrgMembership)
.有许多();
这会正确地使用迁移生成表结构,但在我的控制器中,在运行时访问OrgMembership属性时会引发异常。我做错了什么?还有,我如何更好/更快地学习EF我觉得这些看似不直观的错误浪费了我太多的时间

var user = await Context.Users.FindAsync(RequestContext.Principal.Identity.GetUserId());
if(user.OrgMembership == null || user.OrgMembership.Count < 1)
{
    ...
}
var user=wait Context.Users.FindAsync(RequestContext.Principal.Identity.GetUserId());
if(user.OrgMembership==null | | user.OrgMembership.Count<1)
{
...
}
例外情况详情:

System.Data.Entity.Core.EntityCommandExecutionException未处理 HResult=-2146232004 消息=执行命令定义时出错。有关详细信息,请参见内部异常。 Source=EntityFramework 堆栈跟踪: 位于System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStorommands(EntityCommand EntityCommand,CommandBehavior) 位于System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext上下文,ObjectParameterCollection parameterValues) 在System.Data.Entity.Core.Objects.ObjectQuery
1.c__DisplayClass7.b__6()
在System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func
1 Func,IDbExecutionStrategy executionStrategy,Boolean startLocalTransaction,Boolean releaseConnectionOnSuccess) 在System.Data.Entity.Core.Objects.ObjectQuery
1.c__DisplayClass7.b__5()中
在System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func
1操作) 位于System.Data.Entity.Core.Objects.ObjectQuery
1.GetResults(Nullable
1 forMergeOption) 位于System.Data.Entity.Core.Objects.ObjectQuery
1.Execute(合并选项)
位于System.Data.Entity.Core.Objects.DataClasses.EntityCollection
1.Load(列表
1集合,合并选项)
在System.Data.Entity.Core.Objects.DataClasses.EntityCollection中加载(合并选项)
位于System.Data.Entity.Core.Objects.DataClasses.RelatedEnd.DeferredLoad()处
位于System.Data.Entity.Core.Objects.Internal.LazyLoadBehavior.LoadProperty[TItem](TItem propertyValue,String relationshipName,String targetRoleName,Boolean mustBeNull,Object wrapperObject)
在System.Data.Entity.Core.Objects.Internal.LazyLoadBehavior.c_uuuDisplayClass7
2.b_uuu1(TProxy代理,TItem项)
在System.Data.Entity.DynamicProxies.Account_86E90384E78538EC6FEAB5B02EB53C632922F2F31A5088AB46BD1C2F9BC6D40.get_OrgMembership()
内部异常:
等级=16
错误代码=-2146232060
HResult=-2146232060
行号=11
**消息=列名“帐户Id”无效**
列名“帐户Id”无效。
列名“帐户Id”无效。
数字=207
Procedure=“”
服务器=(LocalDb)\MSSQLLocalDB
Source=.Net SqlClient数据提供程序
状态=1
堆栈跟踪:
位于System.Data.SqlClient.SqlConnection.OneError(SqlException异常、布尔断开连接、操作
1 wrapCloseInAction) 位于System.Data.SqlClient.SqlInternalConnection.OneError(SqlException异常、布尔断开连接、操作
1 wrapCloseInAction)
位于System.Data.SqlClient.TdsParser.ThroweException和Warning(TdsParserStateObject StateObjectStateObj、布尔调用方连接锁、布尔异步关闭)
位于System.Data.SqlClient.TdsParser.TryRun(RunBehavior RunBehavior、SqlCommand cmdHandler、SqlDataReader dataStream、BulkCopySimpleResultSet bulkCopyHandler、TdsParserStateObject stateObj、Boolean和dataReady)
位于System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()处
在System.Data.SqlClient.SqlDataReader.get_MetaData()处
位于System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds、RunBehavior、String ResetOptions String)
位于System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior、RunBehavior RunBehavior、Boolean returnStream、Boolean async、Int32超时、任务和任务、Boolean asyncWrite、SqlDataReader ds、Boolean describeParameterEncryptionRequest)
位于System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior、RunBehavior RunBehavior、Boolean returnStream、String方法、TaskCompletionSource
1 completion、Int32 timeout、Task&Task、Boolean asyncWrite) 位于System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior、RunBehavior RunBehavior、Boolean returnStream、String方法) 位于System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior,String方法) 位于System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior) 位于System.Data.Common.DbCommand.ExecuteReader(CommandBehavior) 在System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.b_uÈc(DbCommand t,DbCommandInterceptionContext
1c)
在System.Data.Entity.Infrastructure.InternalDispatcher.Dispatcher[TTarget,TInterceptionContext,TResult](TTarget,Func
3 operation,TInterceptionContext InternalDispatcher,Action
3 executing,Action`3 executed) 位于System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher