簡體   English   中英

LINQ 2 SQL:部分類

[英]LINQ 2 SQL: Partial Classes

我需要基於AppSetting為我的DataContext設置ConnectionString。 我試圖通過為每個DataContext創建一個Partial Class來做到這一點。 以下是到目前為止的內容,我想知道我是否忽略了某些內容?

具體來說,我是否正確處理了DataContext(處置,陳舊等)?

這樣,我的更新和插入內容會有問題嗎? 文件BLLAspnetdb.cs至少是有用或必要的,還是應全部在生成的子partial class AspnetdbDataContext文件中?

簡而言之,這是可以接受的結構,還是會導致我在闡述它時遇到問題?

dbml文件名= Aspnetdb.dbml

局部類文件名= Aspnetdb.cs

partial class AspnetdbDataContext
{
    public static bool IsDisconnectedUser
    {
        get
        {
            return Convert.ToBoolean(ConfigurationManager.AppSettings["IsDisconnectedUser"]) == true;
        }
    }
    public static AspnetdbDataContext New
    {
        get
        {
            var cs = IsDisconnectedUser ? Settings.Default.Central_aspnetdbConnectionString : Settings.Default.aspnetdbConnectionString;
            return new AspnetdbDataContext(cs);
        }
    }
}

我創建的文件名= BLLAspnetdb.cs

public class BLLAspnetdb
{
    public static IList WorkerList(Guid userID)
    {
        var DB = AspnetdbDataContext.New;
        var workers = from user in DB.tblDemographics
                          where user.UserID == userID
                          select new { user.FirstName, user.LastName, user.Phone };

        IList theWorkers = workers.ToList();

        return theWorkers;
    }

    public static String NurseName(Guid? userID)
    {
        var DB = AspnetdbDataContext.New;

        var nurseName = from demographic in DB.tblDemographics
                        where demographic.UserID == userID
                        select demographic.FirstName +" " + demographic.LastName;

        return nurseName.SingleOrDefault();
    }

    public static String SocialWorkerName(Guid? userID)
    {
        var DB = AspnetdbDataContext.New;

        var swName = from demographic in DB.tblDemographics
                        where demographic.UserID == userID
                        select demographic.FirstName + " " + demographic.LastName;

        return swName.SingleOrDefault();
    }
}

請參閱前面的問題以及有關如何到達這里的背景的可接受答案... switch-connectionstrings-local-and-remote-with-linq-to-sql

您應該處理您的上下文,因為它是一次性的。 每當創建新上下文時,請考慮將語句包裝在using塊中。

我可以將靜態的“ New”屬性表示為“ Create”方法。 屬性創建新對象是不正常的,因此其他需要使用代碼的開發人員可能會對這種行為感到驚訝。

除此之外,您的方法將行得通。 當您獲取上下文時,確定連接字符串的邏輯將運行,您將獲得使用正確的連接字符串構造的上下文。

如果我是我,我不會所有的方法和屬性都是靜態的。 它違背了良好的OO設計,並使您非常專注於特定的實現-但是,我想這不在問題范圍內。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM