我正在实施一个DB First EF5项目,我正在实施SimpleMembership。我的大部分都在工作,但是出现了一个问题。
Simple Membership创建的主用户表中包含UserName。我在应用程序中有几个其他地方需要查询此表,特别是userName。 Simple Membership不使用连接字符串中的Data.EntityClient,因此我将其设置为SqlClient。
因为我没有提供者User表的实体模型,我不知道如何查询它。通常我会创建一个实体模型的实例并在其上使用LINQ,但是当我尝试它时,我得到一个很长的错误,首先将代码与实体混合。我修改了'initialSimpleMembershipAttribute',因此它指向我为Membership表创建的单独连接字符串。
我想到的一个解决方案是保存用户,然后将用户名复制到我的一个自定义表中,然后我可以通过EF查询它,但这似乎违反了重复数据的某种数据库“最佳实践”
我的另一个想法是为Membership创建的表创建第二个edmx模型,但是如果SimpleMembership不使用EntityClient,那是否也意味着它不会识别实体模型?
答案 0 :(得分:0)
你已经过了复杂的事情了。
如果您有自己的模型,那么您可以摆脱默认模板为您提供的模型,而是使用您的模型。无论是Code代码还是数据库优先或其他什么都没关系。只需更改Initialize SimpleMembershipAttribute即可删除对它们提供的默认模型的引用,并确保正确修改InitializeDatabaseConnection调用。
WebSecurity.InitializeDatabaseConnection("YourConnection", "WhateverYouCallYourUserTable",
"WhateverYourUserIdIs", "WhateverYourUserNameColumnIs", autoCreateTables: true);