1

これらはテーブルで、* で終わるフィールドは PK です。Imageテーブルでは、HomeIDまたはCarIDいずれかが値を持つ必要があり、もう 1 つは null です。これと同様に、Feature では null ではなく 0 であるため、キーとして使用できます ( this.HasKey)。しかし、マッピングしようとすると、関連するレコードにそれらが見つかりません。たとえば、Home.Images0 レコードを返します。

+--------------+ +-----------------+ +------------- --+ +---------------+ +---------------+
|ホーム | |車 | |画像 | |特徴 | |機能タイプ |
|---------------| |-----------------| |---------------| |---------------| |---------------|
|ホーム ID* | |カーID* | |画像ID* | |FeatureTypeId* | |FeatureTypeId* |
|タイトル | |ブランド | |名前 | |ホーム ID* | |名前 |
|説明 | |モデル | |URL | |カーID* | | | | |
|住所 | |年 | |HomeID(null) | | | | | | | | |
| | | | | | | | |CarID (ヌル) | | | | | | | | |
+--------------+ +-----------------+ +------------- --+ +---------------+ +---------------+

これらは私のモデルとマッピングのコードです。

    public class BaseModel
    {
        /// <summary>
        /// Gets or sets Id
        /// </summary>
        public int Id { get; set; }
    }

    public class Home : BaseModel
    {
        /*All direct fields*/

        public List<Image> Images{get; set;}
    }

    internal class HomeMap : EntityTypeConfiguration<Home>
    {
        public HomeMap()
        {
            /* All direct mapping to Properties to ColumnsNames */

            // I tried the following 2 lines 

            //this.HasOptional(p => p.Images).WithRequired().WillCascadeOnDelete(false);
            //this.HasOptional(p => p.Images).WithMany().Map(m => m.MapKey("ImageId")).WillCascadeOnDelete(false);
        }
     }

    /* All the same definition and mapping for the others*/
    /* ImageMap for the relation*/
    /* Image model has a field type `Home` name **Home** */

    internal class ImageMap: EntityTypeConfiguration<Image>
    {
        public ImageMap()
        {
            /* All direct mapping to Properties to ColumnsNames */
            //Currently this is what I am using for the mapping
            this.HasOptional(i => i.Home).WithMany(h => h.Images).HasForeignKey(i => i.HomeID).WillCascadeOnDelete(false);

        }
     }
4

0 に答える 0