2009-12-09 221 views
1

我想知道關於在sql server中設置asp.net成員資格以與linq to sql很好地協作的最佳方法。ASP.NET成員資格和Linq到SQL

我想使用用戶名字段的外鍵關係,並有LINQ到SQL識別ASP用戶屬性。

我在用戶表和我的其他表之間建立關係時遇到了一些問題。我是否需要將用戶名設置爲主鍵才能使用?

回答

4

當我做到了,我只是讓aspnet_Users表格內的UserId場是外鍵。當您使用LinqToSql可以基於ASP中的用戶名這樣仍然過濾:

from data in connection.MyTable 
where data.aspnet_User.UserName == User.Identity.Name 
select data; 

這是因爲aspnet_Users表格內和自己的表的外鍵關係。

+1

是的,這也是我所做的,發揮了魅力。 – 2009-12-09 14:49:09

+0

真棒,我會給那個挖。 – 2009-12-09 22:36:40

1

Users數據庫表上的主鍵約束與ASP.NET成員資格提供程序沒有任何關係(或很少)。成員資格提供者是一個實現System.Web.Security中定義的抽象類MembershipProvider的類。默認情況下,asp.net應用程序使用鏈接到aspnet_XXX表的成員資格提供程序,但您可以編寫自己的提供程序,它將使用您自己的「用戶」表並通過linq2sql訪問它。 鋁你要做的是創造類從System.Web.Security.MembershipProvider繼承並設置它在web.config中,如:

<membership defaultProvider="MyMembershipProvider"> 
    <providers> 
    <clear/> 
    <add name="MyMembershipProvider" type="MyNamespace.MyMembershipProvider" applicationName="MyApp"/> 
    </providers> 
</membership> 

你必須實現使用字符串的用戶名來識別用戶的方法,但它不一定是你的表的主鍵。它應該由唯一的領域。我認爲最好的想法是使用INT作爲主鍵。