小编Gre*_*man的帖子

CsvHelper 忽略复杂类型

我正在尝试将 CSV 文件中的测试数据加载到可以加载到内存中 EF Core DB 上下文中的记录中。

我有一个简化的实体,如下所示:

public class Project
{
   public int { get; set; }
   public Owner? Owner { get; set; } = null;
}
Run Code Online (Sandbox Code Playgroud)

A类图:

public class ProjectsClassMap : CsvHelper.Configuration.ClassMap<Projects>
{
     public ProjectsClassMap()
     {
        AutoMap(CultureInfo.CurrentCulture);
        Map(m => m.Owner).Ignore();

    }
}
Run Code Online (Sandbox Code Playgroud)

然后是一个加载数据的函数,如下所示:

private void LoadTestData<T>(string fileName, InMemoryEFCoreDbContext db, Type? classMap = null)
            where T : class
        {
            var data = GetTestData(fileName);
            var readerConfig = new CsvConfiguration(CultureInfo.CurrentCulture) {
                Delimiter = ",",
                PrepareHeaderForMatch = (r, c) => r.Replace(" ", …
Run Code Online (Sandbox Code Playgroud)

csvhelper

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

参数值超出范围

看起来 EF 正在将零填充到我试图保存的值,然后引发异常。这是我的代码:为什么值为 10.17 的总小时数字段超出了小数(6,5)值类型的范围以及为什么它用零填充该值?直接使用SQL Server Management Studio保存这个值似乎没有问题,所以看起来更像是EF的问题。

这是来自数据库第一个 .edmx 文件。我尝试过将比例和精度设置为无。两者都没有工作

 var rVal = new Data.FactPayrollHour()
                {
                    BereavementHours = 0.0M,
                    CostCenter = "MyCostCenter",
                    Department = "MyDepartment",
                    EmergencyHours = 0.0M,
                    HomeGroupCode = "MyHomeGroup",
                    PayrollEmployeeId = employees.FirstOrDefault().Id,
                    PayType = "MyPayType",
                    PunchDateKey = dateDims.FirstOrDefault().ID,
                    Schedule = "",
                    ServiceHours = 0.0M,
                    Shift = "",
                    ShortTermHours = 0.0M,
                    TimePolicy = "",
                    TotalHours = 10.17M,
                    UnpaidHours = 0.0M,
                    VacationHours = 0.0M
                };
                db.FactPayrollHours.Add(rVal);
                db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

异常消息是:Parameter value '10.17000' is out of range.

堆栈跟踪:

   at System.Data.SqlClient.TdsParser.TdsExecuteRPC(SqlCommand cmd, …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-6

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

标签 统计

c# ×1

csvhelper ×1

entity-framework-6 ×1