gpt4 book ai didi

c# - LINQ 2 SQL : Partial Classes

转载 作者:太空宇宙 更新时间:2023-11-03 14:30:53 25 4
gpt4 key购买 nike

我需要根据 AppSetting 为我的 DataContext 设置 ConnectionString。我试图通过为每个 DataContext 创建一个部分类来做到这一点。以下是我到目前为止所拥有的,我想知道我是否忽略了什么?

具体来说,我是否正确处理了我的 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-between-local-and-remote-with-linq-to-sql

最佳答案

你应该处理你的上下文,因为它是一次性的。每当您创建新上下文时,请考虑将语句包装在 using block 中。

我可能会将静态“New”属性表示为“Create”方法。属性创建新对象是不正常的,因此需要使用该代码的其他开发人员可能会对这种行为感到惊讶。

除此之外,您的方法会奏效。当您获取上下文时,确定连接字符串的逻辑就会运行,您将获得一个使用正确的连接字符串构造的上下文。

如果我是你,我不会让你所有的方法和属性都是静态的。它违背了良好的 OO 设计,并使您非常局限于特定的实现 - 但是,我想这不在问题的范围内。

关于c# - LINQ 2 SQL : Partial Classes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2631630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com