どのように移行して亜音速の「関係」を扱うのですか?
-
16-09-2019 - |
質問
この記事によると: 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
は、災害に見舞われた複数のIList
のAddresses
が含まれています。私はSimpleRepository
でデータベースにこれらを追加するためにSimpleRepositoryOptions.RunMigrations
を使用すると、予想通り、それはすべての列を持つテーブル、ない外部キー列を生成します。
私はDisaster.Addresses
を呼び出すときに、私はすべての影響を受けるAddresses
のリストを取得するように、私は一緒にこの二つの関係だろうか?これは可能ですか私の代わりにはActiveRecordを使用して、最初のデータベーステーブルを作成する必要がありますか?それとも私がAddress
に、災害のIDの欄に追加する必要がありますか?もしそうなら、どのように多対多の関係のため、この方法で作業はしますか?
解決
それは可能です - あなただけの手でそれを行うすべてです。 「アドレス」と呼ばれる災害にプロパティを追加してのIList <>それを作る(あるいはあなたが遅延ロードにそれをしたい場合、あなたはそれがIQueryableを行うことができます)。あなたの災害を取得すると、ちょうどあなたのアドレスを取得するようにしてくださいます。
これは、「手動」の一種だ - それはアイデアです。私は私が後のリリースでプッシュするために願っています。この機能強化に取り組んでいます。
そして、あなたは私が最初の場所でそれをしなかった理由を尋ねる前に:)私は多くの親/子関係に基づいて、1対多の多くを使用する必要がある場合、私は知らないので、それはです。あなたの例では、私はそれはおそらく多くの多くのあるべき多くにそれはおそらく1だと思いますが、私は(特にフロリダで)アドレスや災害について知っている与えられたと思います。
ボトムライン - どのように亜音速のはこのことを知っているだろうか?私たちは、住所は、それが(明らかである)、多くの多くのものより多くの災害を持っている場合を意味し、「双方向性」の両方のオブジェクトをイントロスペクション可能性が - しかし、あなたはDDDが好きならば、それは幸せなコーディングではありません。
。私は問題を強制するオーバーライドのいくつかの種類とそのルールに傾いています。この上のあなたの考えは歓迎されている:)