7

DateTimeプロパティを使用してPOCOエンティティを保存するときに問題が発生しました。DateTimeプロパティの値がDateTime.MinValueの場合、SqlDateTime.MinValueとDateTime.MinValueの違いにより、SaveChanges()は失敗します。

じゃあ何をすればいいの?

1)エンティティを保存する前にDateTime.MinValueを確認する必要がありますか?

2)日時のPOCOプロパティをこのように設計する必要がありますか?

    private SqlDateTime _created;
    public virtual DateTime Created
    {
        get
        {
            return _created.Value;
        }
        set 
        {
            _created = value == DateTime.MinValue ? SqlDateTime.MinValue : value;
        }
    }

/ PW

4

2 に答える 2

8

可能であれば、データベースフィールドをnull許容にし、値を最小値ではなくnullに設定することをお勧めします。

または、次のようにプロパティを設計します。

private SqlDateTime? _created;
public virtual DateTime Created
{
    get
    {
        return (DateTime)(_created ?? SqlDateTime.MinValue);
    }
    set
    {
        if (value == null || value < (DateTime)SqlDateTime.MinValue)
        {
            _created = SqlDateTime.MinValue;
        }
        else 
        {
            _created = (SqlDateTime)value;
        }
    }
}
于 2011-04-05T11:18:24.270 に答える
5

私が考えることができる最も簡単なアプローチは、DateTimeプロパティを(DateTime)SqlDateTime.MinValue次のように初期化することです。

public class SomeEntity
{
    public SomeEntity()
    {
        Updated = (DateTime)SqlDateTime.MinValue;
    }

    public DateTime Updated { get; set; }
}
于 2011-07-22T13:48:31.157 に答える