在为Dapper定义实体类时,如何保护自己免受意外错别?

时间:2015-06-11 05:20:18

标签: c# dapper

在下面的代码中,我特意为ProductID(xxxxSpelledWrong)制作了拼写错误,当然Dapper会很乐意根据匹配列到属性名称将数据库中的内容加载到类中,所以现在我和#39;有点担心。

除了蛮力的方法来编写测试以检查我正在处理的每个实体的每一个列/属性对,是否有一些更聪明的方法来获得你没有的合理水平的确定性您的实体中是否存在拼写错误(或者底层数据库中的列名已更改?

var products = conn.Query<Product>(@"select top 100 * from Production.Product");

        public partial class Product
        {
            public int ProductID_xxxxSpelledWrong { get; set; }
            public string Name { get; set; }
            public string ProductNumber { get; set; }
            public bool MakeFlag { get; set; }
            public bool FinishedGoodsFlag { get; set; }
            public string Color { get; set; }
            public int SafetyStockLevel { get; set; }
            public int ReorderPoint { get; set; }
            public decimal StandardCost { get; set; }
            public decimal ListPrice { get; set; }
            public string Size { get; set; }
            public string SizeUnitMeasureCode { get; set; }
            public string WeightUnitMeasureCode { get; set; }
            public decimal? Weight { get; set; }
            public int DaysToManufacture { get; set; }
            public string ProductLine { get; set; }
            public string Class { get; set; }
            public string Style { get; set; }
            public int? ProductSubcategoryID { get; set; }
            public int? ProductModelID { get; set; }
            public DateTime SellStartDate { get; set; }
            public DateTime? SellEndDate { get; set; }
            public DateTime? DiscontinuedDate { get; set; }
            public DateTime ModifiedDate { get; set; }    
        }

1 个答案:

答案 0 :(得分:0)

如果您的班级与您的班级相匹配,为什么要写它?使用t4模板生成它。

这样的事情应该有效: https://www.nuget.org/packages/Dapper.SimpleCRUD.ModelGenerator/

文档:https://github.com/ericdc1/Dapper.SimpleCRUD/wiki/T4-Template