标签: data-access-layer

Settings.Designer文件和静态

我有一个DAL类库,它作为DLL包含在我的程序中.以下行来自DAL以初始化连接.

DataSet ds = new DataSet("table");
        SqlConnection cnn = new SqlConnection(Settings.CMOSQLConn);
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我收到以下错误:

An unhandled exception of type 'System.StackOverflowException' occurred in CMO.DAL.dll
Run Code Online (Sandbox Code Playgroud)

以下是在Settings.Designer.cs文件中,它在get调用中显示错误:

        [global::System.Configuration.ApplicationScopedSettingAttribute()]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]
    [global::System.Configuration.DefaultSettingValueAttribute("Data Source=WWCSTAGE;Initial Catalog=CMO;Persist Security Info=True;User ID=CMOWe" +
        "bService;Password=ecivreSbeWOMC")]
    public static string CMOSQLConn {
        get {
            return (CMOSQLConn);
        }
    }
Run Code Online (Sandbox Code Playgroud)

任何人都有任何想法的想法?是因为连接字符串存储在dll而不是我的主应用程序中?我真的很坚持这一点,非常感谢任何帮助!

编辑1

我在下面尝试了格雷格的建议:

        public static string CMOSQLConn {
        get {
            return (Settings.CMOSQLConn);
        }
    }
Run Code Online (Sandbox Code Playgroud)

我仍然得到同样的错误...还有更多想法吗?谢谢到目前为止!

编辑2

所以我按照下面重新设置文件的建议,现在我的设置文件看起来像这样 - >

public string CMOSQLConn {
        get {
            return ((string)(this["CMOSQLConn"]));
        }
    }
Run Code Online (Sandbox Code Playgroud)

不幸的是,现在我不会编译这个语句 - > …

c# settings data-access-layer winforms

1
推荐指数
1
解决办法
1043
查看次数

在NHibernate中制作数据访问方法的最佳方法是什么?

例如,我有两个类:Foo和Bar.这些类映射到一些表.

至于现在,我为每个类都有静态方法:Add,Update,Delete,Get.

E.g.: 

public class Foo
{
   private Guid _id;
   private string _someProperty;

   static Foo Get(Guid id);
   static void Add(Foo foo);
   static void Update(Foo foo);
   static void Delete(Foo foo);
}
Run Code Online (Sandbox Code Playgroud)

所以,当我需要用我的对象做smth时我会这样说:

Foo foo = Foo.Get(id);

Foo newfoo = new Foo();
Foo.Add(newfoo);

Foo.Update(newfoo);

Foo.Delete(newfoo);
Run Code Online (Sandbox Code Playgroud)

这是一个好方法吗?如果不是,我应该使用什么方法来访问数据?

谢谢

c# nhibernate static-methods data-access-layer

1
推荐指数
1
解决办法
407
查看次数

3层架构的好处是什么?

我并不完全相信三层架构的好处.那么,为什么LINQ出现了,这是一种更轻便的数据访问方法?任何输入将不胜感激.

linq data-access-layer

1
推荐指数
2
解决办法
1245
查看次数

寻找.NET数据访问层

我正在为ado.net寻找数据访问层.我对linq,EF,NHibernate或任何其他ORM不感兴趣.目前,我正在使用umbraco的数据访问层.DAL非常好但他们停止开发它所以我正在寻找另一个.有谁知道我在哪里可以找到我可以测试的DAL列表?

c# data-access-layer sql-server-2008

1
推荐指数
1
解决办法
926
查看次数

在DAL层中使用PetaPoco的正确方法(ASP.NET Web窗体VB.NET)

我正在尝试使用PetaPoco为ASP.NET Web表单项目生成我的DAL层.

Namespace Eva.Dal.Polls  
Public Partial Class EVAMOD_PL_CategoryDb
    Private db As Eva.Dal.Core.EvaDb

    Public Function Insert(a As EVAMOD_PL_Category) As Object
        Return db.Insert(a)
    End Function

    Public Sub New()
        db = New Eva.Dal.Core.EvaDb
    End Sub
End Class

Public Partial Class EVAMOD_PL_GL_CategoryDb
    Private db As Eva.Dal.Core.EvaDb

    Public Function Insert(a As EVAMOD_PL_GL_Category) As Object
        Return db.Insert(a)
    End Function

    Public Sub New()
        db = New Eva.Dal.Core.EvaDb
    End Sub
End Class
End Namespace
Run Code Online (Sandbox Code Playgroud)

特别是我对如何打开数据库感兴趣.在PetaPoco网站上有一个例子

// Create a PetaPoco database 
objectvar db=new PetaPoco.Database("connectionStringName");
// Show all articles    
foreach …
Run Code Online (Sandbox Code Playgroud)

vb.net asp.net orm data-access-layer petapoco

1
推荐指数
1
解决办法
3834
查看次数

无法将类型'void'隐式转换为'string'

我已经尝试了一段时间了,我真的不明白.我发现错误"不能隐式地将类型'void'转换为'string'"我尝试了多种字符串变体,int,nothing,void,public,static和nope我真的不对.

我想通过我的DAL和BLL从我的db中获取一个值,我的代码看起来像这样.

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Repeater1.DataSource = BLL.getGames();
        Repeater1.DataBind();
        var culture = CultureInfo.GetCultureInfo("sv-SE");
        var dateTimeInfo = DateTimeFormatInfo.GetInstance(culture);
        var dateTime = DateTime.Today;
        int weekNumber = culture.Calendar.GetWeekOfYear(dateTime, dateTimeInfo.CalendarWeekRule, dateTimeInfo.FirstDayOfWeek);
        string mroundY = dateTime.Year.ToString();
        string mroundW = weekNumber.ToString();
        string mrounddate = mroundY + mroundW;

        string mround = BLL.getMroundGames(mrounddate);  <-- Here's the error

    }
    protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

我的BLL看起来像这样;

    public class BLL
{
    public static void getMroundGames(string mrounddate) …
Run Code Online (Sandbox Code Playgroud)

c# data-access-layer bll

1
推荐指数
1
解决办法
4万
查看次数

MVC 4中数据库方法的最佳实践

我对MVC 4很陌生,到目前为止我在C#中主要使用Web表单.我理解MVC的模式,路由,调用动作等等.

但是负责从数据库中获取数据的操作呢,例如通过激活存储过程?我看过一些教程,他们在操作中直接连接数据库的逻辑.

但是,我正在考虑采用更集中的方式来实现它.例如,我可以将所有触发存储过程的函数放在一个名为DatabaseCoordinator.cs的单独类中,例如,名为Helpers的文件夹中.然后我可以从控制器中的动作调用它们.

通过这种方式,我将知道我可以在一个类中找到我的所有数据库方法,这是一个非常干净的解决方案,我认为(或至少在Web表单中).但是我想遵循MVC的模式,并且只使用模型,视图和控制器作为模式本身的名称.

那么最佳做法是什么?我应该为此单独创建一个类,还是直接在控制器中或者在其他地方实现逻辑?

c# data-access-layer asp.net-mvc-4 .net-4.5

1
推荐指数
2
解决办法
1万
查看次数

在asp.net C#Databinding Class中将两个DateTime之间的差异转换为HH:MM:SS格式

我需要减去两个日期时间并以HH:MM:SS格式显示它们的网络应用程序.我从mappling类中的数据库中获取这些并尝试在那里减去并转换为字符串格式.我正在尝试以下方式

TimeTook = Convert.ToString(reader.GetDateTimeNullable("COMPLETED_DATE") - reader.GetDateTime("REQUEST_DATE"))
Run Code Online (Sandbox Code Playgroud)

这个语句用在一个映射函数中,当我把它转换成字符串时,我得到了几天HH:MM:SS.ff格式,但我想用HH:MM:SS格式得到它,因为我直接将它绑定到用户控件中的标签如下

 <asp:Label ID="lblTimeTook" runat="server" Text='<%# Bind("TimeTook") %>'></asp:Label>
Run Code Online (Sandbox Code Playgroud)

我想直接绑定两个日期之间的差异,并以HH:MM:SS格式显示它们.

c# asp.net datetime data-access-layer date

1
推荐指数
1
解决办法
3875
查看次数

Go Web App 中是否有必要有 DAL 和 BLL?

在很多 Go 编程书籍中,作者通常将数据访问逻辑放在处理业务逻辑的同一个函数中。虽然我知道这可能仅用于教学目的,但我想知道人们是否真的在现实世界的开发中将 BLL 与 DAL 分开。

我曾尝试将分层设计应用到我的 Go 项目中,但并没有感觉到任何好处。例如,我的 DAL 函数通常是这样的(在 appdal 包中):

func GetCustomerAccountInfo (accountID int) (*sql.Rows, error) {
    sql := `SELECT * FROM CUSTOMER_ACCOUNT WHERE ID = $1`
    return GLOBAL_PSQL.Query(sql, accountID)
}
Run Code Online (Sandbox Code Playgroud)

我典型的 BLL 函数是这样的:

func NewCustomerAccountBLL (accountID int) (* CustomerAccountBLL) {
    rows, err := appdal.GetCustomerAccountInfo(accountID)
    // create an instance of CustomerAccountBLL (bll) and scan rows....
    return &bll
}
Run Code Online (Sandbox Code Playgroud)

我经常发现我的 BLL 本质上是与数据库模式耦合的,因为扫描要求我知道我的查询读取了哪一列,所以我发现将一些 DAL 函数合并到 BLL 中是一个不错的主意(例如将查询合并到 BLL反而)。此外,拥有 DAL 还会增加我必须维护的代码量。

然而,许多软件架构师也鼓励分层设计,拥有 BLL 和 DAL 并在每一层上分配明确的职责是有意义的。

虽然我也明白设计和模式不一定依赖于编程语言,但我经常发现在我的项目中同时使用 BLL 和 …

business-logic-layer data-access-layer go

1
推荐指数
1
解决办法
1186
查看次数

如何将项目分为三层?

我有一个asp.net网站,我想把它组织成三层

  1. 数据访问
  2. UI

这些层中的具体内容是什么?

例如

数据 - 模型 - 存储库?这只是接口 - IoC吗?

域名 - 服务?

UI - javascript - 区域特定型号? - css

有人可以提供一个简单的指南来组织这样的asp.net网站吗?

asp.net domain-driven-design data-access-layer organization n-tier-architecture

0
推荐指数
1
解决办法
659
查看次数