NPOCOを使用して保存する方法がありますが、1つのモデルを除いて正常に動作しています。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
を取得しました。しかし、私はそれを正しい名前に戻すと、データは保存されず、エラーもスローされません。私は手動で管理スタジオを使用してデータベースに同じレコードをエラーなしで挿入しました(隠されたDBエラーがないことを確認するだけです)。
UPDATE: は何らかの理由でそれがNPOCO
がLoginName
をマッピングされていないようです。私がすることで、この結論に達しました:
SingleById
を使用して
:
「のマッピングは、オブジェクト型から存在していない<> f__AnonymousType42`1 [[可能System.String、mscorlib、バージョン= 4.0.0.0、Culture = neutral、PublicKeyToken = b77a5c561934e089]]を既知のマネージプロバイダのネイティブタイプに変換します。
Save
の代わりにInsert
メソッドを使用しました。私がそれをすると、エラーが出ます:"'LoginName'列、 'TableName'列に値を挿入できません;列はNULLを許可しません。INSERTは失敗します。\ r \ n文は終了しました。
モデルはすべての値を持っているにもかかわらず、私は、デバッガを通してそれを点検するとき。
upsert
であるため、save
はエラーをスローしないと思われます。
ありがとうございます。 – zulq