質問

この記事によると: http://subsonicproject.com/docs/3.0_Migrationsする

Bottom line: if you're a developer that is concerned about database design,
migrations might not be for you.

[OK]を、それは大丈夫です、私はすべてのビジネス・ロジックが含まれていないデータの単純持続的なリポジトリとしてデータベースを扱うことができます。つまり、見せかけのテキストファイルます。

私が方法がわからない、何が一緒に2つのオブジェクトを関連付けるです。この2つのクラスの例を見てみましょう。

public class Disaster
{
    public int DisasterId { get; set; }
    public string Name { get; set; }
    public DateTime? Date { get; set; }
    public IList<Address> Addresses { get; set; }
}

public class Address
{
    public int AddressId { get; set; }
    public string WholeAddressHereForSakeOfBrevity { get; set; }
}

Disasterは、災害に見舞われた複数のIListAddressesが含まれています。私はSimpleRepositoryでデータベースにこれらを追加するためにSimpleRepositoryOptions.RunMigrationsを使用すると、予想通り、それはすべての列を持つテーブル、ない外部キー列を生成します。

私はDisaster.Addressesを呼び出すときに、私はすべての影響を受けるAddressesのリストを取得するように、私は一緒にこの二つの関係だろうか?これは可能ですか私の代わりにはActiveRecordを使用して、最初のデータベーステーブルを作成する必要がありますか?それとも私がAddressに、災害のIDの欄に追加する必要がありますか?もしそうなら、どのように多対多の関係のため、この方法で作業はしますか?

役に立ちましたか?

解決

それは可能です - あなただけの手でそれを行うすべてです。 「アドレス」と呼ばれる災害にプロパティを追加してのIList <>それを作る(あるいはあなたが遅延ロードにそれをしたい場合、あなたはそれがIQueryableを行うことができます)。あなたの災害を取得すると、ちょうどあなたのアドレスを取得するようにしてくださいます。

これは、「手動」の一種だ - それはアイデアです。私は私が後のリリースでプッシュするために願っています。この機能強化に取り組んでいます。

そして、あなたは私が最初の場所でそれをしなかった理由を尋ねる前に:)私は多くの親/子関係に基づいて、1対多の多くを使用する必要がある場合、私は知らないので、それはです。あなたの例では、私はそれはおそらく多くの多くのあるべき多くにそれはおそらく1だと思いますが、私は(特にフロリダで)アドレスや災害について知っている与えられたと思います。

ボトムライン - どのように亜音速のはこのことを知っているだろうか?私たちは、住所は、それが(明らかである)、多くの多くのものより多くの災害を持っている場合を意味し、「双方向性」の両方のオブジェクトをイントロスペクション可能性が - しかし、あなたはDDDが好きならば、それは幸せなコーディングではありません。

私は問題を強制するオーバーライドのいくつかの種類とそのルールに傾いています。この上のあなたの考えは歓迎されている:)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top