1

これは簡単なことだと思いましたが、良い方法は思いつきません。

ユーザーがWebフォームを送信します。提出された情報に基づいて、3つのクラスを作成し、受信したデータからそれらのプロパティを割り当てます。

UserInfo userInfo = new UserInfo();
UserAddress userAddress = new UserAddress();
UserEmployer userEmployer = new UserEmployer();

送信された情報に基づいて、一部のクラスにはプロパティが入力され、一部のクラスには入力されません。

たとえば、userInfoクラスにプロパティが割り当てられているかどうかを確認するための最良の方法は何ですか?実物のプロパティが割り当てられておらず、すべてがnullまたは ""に設定されている場合、特定のオブジェクトをデータベースに保存したくありません。

少なくとも1つの不動産が割り当てられたオブジェクトのみを保存したいと思います。

ps。NHibernateを使用してデータをdbに保存する

4

4 に答える 4

3
public interface IPersistable{
    bool ShouldPersist {get;}
}

public class MyPersistable:IPersistable
{
    private bool _persist;

    public MyPersistable(){}

    public string MyValue{
        get{
            return _myValue;
        }
        set{
            _persist = true;// or validate with !IsNullOrEmpty() first
            _myValue = value;
        }
    }

    public bool ShouldPersist{
        get{
            return _persist;
        }
    }
}
于 2012-05-15T18:51:11.493 に答える
1

リフレクションを使用してプロパティをループし、各プロパティを個別にチェックできます。

var type = userInfo.GetType();
var properties = type.GetProperties();

または、プロパティではなくフィールドの場合

var fields = type.GetFields();

次に、それぞれにnullまたは何らかの値があるかどうかを確認できます。

于 2012-05-15T18:44:45.703 に答える
0

shouldSave()3つのクラスすべてが実装するインターフェイスを作成し、またはの行に沿って関数を提供してみてください。この関数は、hasSetProperties()各データフィールドをチェックし、いずれかが定義されている場合はtrueを返します。

たぶん、NHibernateに簡単に渡すことができる形式ですべてのデータを取得する方法ですら。

于 2012-05-15T18:41:07.870 に答える
0

そのオブジェクトのプロパティに割り当てることができる値がない場合は、そのオブジェクトのインスタンスを作成しないでください。

その隣にある「UserAddress」は、エンティティではなく、値オブジェクトである可能性があります。

于 2012-05-15T18:47:25.630 に答える