繁体   English   中英

另一个数据访问层(c#.net 2.0)

[英]yet another Data Access Layer ( c# .net 2.0)

意识到我正在编写另一个代码生成器来为简单的ORM层做sps​​ /类/接口等。 这次,大多数胆量都在SQL中。 我有一个通用的C#DAL,用于调用sps /获取结果等(花了我一个小时左右的时间,很小)。

我以为到现在肯定会有一种更简单的方法...在那里吗?

我对SQL充满信心/胜任并使用存储的procs等-我不想对SQL隐藏,只是将无聊的重复从填充/持久对象的编码中删除。 我不喜欢学习模板语言/复杂的应用程序,也不是产生大型膨胀软件(或建立在膨胀的MS库上的应用程序)的应用程序。 还必须能够从现有数据库开始。

还是自己动手的情况? 真?

.Net 2.0(Winforms)

编辑:如果不是很简单/很快,我不是完全反对模板。 理想情况下,该解决方案对于其他开发人员来说应该是小型,免费且省钱的。

看看BLToolkit

[TestFixture]
public class ExecuteObject
{
    public abstract class PersonAccessor : DataAccessor<Person>
    {
        // Here we explicitly specify a stored procedure name.
        //
        [SprocName("Person_SelectByKey")]
        public abstract Person GetByID(int @id);

        // SQL query text.
        //
        [SqlQuery("SELECT * FROM Person WHERE PersonID = @id")]
        public abstract Person GetPersonByID(int @id);

        // Specify action name.
        // Stored procedure name is generated based on convention
        // defined by DataAccessor.GetDefaultSpName method.
        //
        [ActionName("SelectByName")]
        public abstract Person GetPersonByName(string @firstName, string @lastName);

        // By default method name defines an action name
        // which is converted to a stored procedure name.
        // Default conversion rule is ObjectName_MethodName.
        // This method calls the Person_SelectByName stored procedure.
        //
        public abstract Person SelectByName(string @firstName, string @lastName);
    }

    [Test]
    public void Test()
    {
        PersonAccessor pa = DataAccessor.CreateInstance<PersonAccessor>();

        // ExecuteObject.
        //
        Assert.IsNotNull(pa.GetByID        (1));
        Assert.IsNotNull(pa.GetPersonByID  (2));
        Assert.IsNotNull(pa.GetPersonByName("Tester", "Testerson"));
        Assert.IsNotNull(pa.SelectByName   ("Tester", "Testerson"));
    }
}

不能直接回答您的问题。

阅读Ayende的精彩文章: 不编写自己的对象关系映射器的25个理由

一个推荐使用NHibernate。

看看SubSonic。

我喜欢nHibernate,我非常精通SQL。 但是,我不想不必为每个表至少编写四个proc。 对于我不知道如何使nHibernate做的事情。

您确实有很多代码生成器,但是如果您不想学习如何构建模板,并且对构建的/社区模板不满意,那么您唯一的其他选择就是自己滚动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM