[英]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"));
}
}
看看SubSonic。
我喜欢nHibernate,我非常精通SQL。 但是,我不想不必为每个表至少编写四个proc。 对于我不知道如何使nHibernate做的事情。
您确实有很多代码生成器,但是如果您不想学习如何构建模板,并且对构建的/社区模板不满意,那么您唯一的其他选择就是自己滚动。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.