NPOCO Save 仅适用于特定型号
NPOCO Save not working only for specific model
我有一个使用 NPOCO 保存的方法,除了一个模型外,它工作正常。
public bool Upsert<T>(T record, string message)
{
try
{
using (var db = new Database(GetConnStr(), DatabaseType.SqlServer2008))
{
db.Save(record);
return true;
}
}
catch (Exception x)
{
//log exception
return false;
}
}
此代码有效,我正在使用多个模型。但是对于以下模型,它不会保存也不会抛出任何错误:
[PrimaryKey("LoginName")]
public class TableName
{
public string LoginName { get; set; }
public string RealName { get; set; }
public string Tag { get; set; }
}
我已经调试并单步执行代码并确认模型包含数据,保存方法被命中并且没有抛出异常。我已将模型名称更改为错误的值并得到正确的错误 invalid object name
。但是,当我将其改回正确的名称时,数据不会保存并且不会引发任何错误。我已经使用 management studio 手动将相同的记录插入到数据库中而没有错误(只是为了确保没有隐藏的数据库错误)。
更新:
无论出于何种原因,NPOCO
似乎都没有映射 LoginName
。我通过以下方式得出了这个结论:
使用 NPOCO SingleById
会引发以下错误:
"No mapping exists from object type <>f__AnonymousType42`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] to a known managed provider native type."
使用了 Insert
方法而不是 Save
。当我这样做时,出现错误:
"Cannot insert the value NULL into column 'LoginName', table 'TableName'; column does not allow nulls. INSERT fails.\r\nThe statement has been terminated."
即使模型具有所有值,当我通过调试器检查它时。
我怀疑 save
不会抛出错误,因为它是 upsert
.
尝试将您的主键定义更改为
[PrimaryKey("LoginName", AutoIncrement=false)]
由于LoginName不是自增字段,所以无法添加记录。 AutoIncrement 的默认值为 True。
我有一个使用 NPOCO 保存的方法,除了一个模型外,它工作正常。
public bool Upsert<T>(T record, string message)
{
try
{
using (var db = new Database(GetConnStr(), DatabaseType.SqlServer2008))
{
db.Save(record);
return true;
}
}
catch (Exception x)
{
//log exception
return false;
}
}
此代码有效,我正在使用多个模型。但是对于以下模型,它不会保存也不会抛出任何错误:
[PrimaryKey("LoginName")]
public class TableName
{
public string LoginName { get; set; }
public string RealName { get; set; }
public string Tag { get; set; }
}
我已经调试并单步执行代码并确认模型包含数据,保存方法被命中并且没有抛出异常。我已将模型名称更改为错误的值并得到正确的错误 invalid object name
。但是,当我将其改回正确的名称时,数据不会保存并且不会引发任何错误。我已经使用 management studio 手动将相同的记录插入到数据库中而没有错误(只是为了确保没有隐藏的数据库错误)。
更新:
无论出于何种原因,NPOCO
似乎都没有映射 LoginName
。我通过以下方式得出了这个结论:
使用 NPOCO
SingleById
会引发以下错误:"No mapping exists from object type <>f__AnonymousType42`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] to a known managed provider native type."
使用了
Insert
方法而不是Save
。当我这样做时,出现错误:"Cannot insert the value NULL into column 'LoginName', table 'TableName'; column does not allow nulls. INSERT fails.\r\nThe statement has been terminated."
即使模型具有所有值,当我通过调试器检查它时。
我怀疑 save
不会抛出错误,因为它是 upsert
.
尝试将您的主键定义更改为
[PrimaryKey("LoginName", AutoIncrement=false)]
由于LoginName不是自增字段,所以无法添加记录。 AutoIncrement 的默认值为 True。