2つのクラス間に1対多の関係を作成する必要があります。データベースにはプライマリまたは外部キーが含まれていません。このようにしてキーなしで既存のデータベースビューに1対多の関係をマッピングする
[Table("Barcode")]
public partial class Barcode
{
[Column("_Barcode")]
public string _Barcode { get; set; }
[Column("_SkuRef")]
[MaxLength(16)]
public byte[] _SkuRef { get; set; }
[Key]
[Column("Id")]
public long Id { get; set; }
public string _SkuId { get; set; }
}
[Table("SKU")]
public partial class SKU
{
[Column("_Code", Order = 0)]
[StringLength(11)]
public string _Code { get; set; }
[Column("_Description", Order = 1)]
[StringLength(150)]
public string _Description { get; set; }
[Column("_ProductId", Order = 2)]
[StringLength(50)]
public string _ProductId { get; set; }
[Column("_Ref", Order = 3)]
[MaxLength(16)]
public byte[] _Ref { get; set; }
[Key]
[Column(Order = 4)]
[StringLength(36)]
public string Id { get; set; }
}
(データベーススキーマの変更が許可されていない)ので、私は代わりに3つのテーブルの2つのビューを作成することを決めた、とビューも何のプライマリ/外部キーを持っていない、私が使用することをしようと試みました何かのような
using (SkuContext db = new SkuContext())
{
var Skutable = db.SKUs;
foreach(var s in Skutable)
{
Console.WriteLine(s.Id);
}
}
とそのうまくいきます。イムは
public partial class Barcode
{
....
[ForeignKey("_SkuId")]
[Column("_SkuId")]
[StringLength(36)]
public string _SkuId { get; set; }
}
public partial class SKU
{
....
public IEnumerable<Barcode> Barcodes;
}
を追加しようとしたとき、私は「プロパティ 『_SkuId』ナビゲーションプロパティとして設定することはできません」 に直面していますエラー。 私の質問は正しいことをする方法です?どのようにこれらの2つのクラス間の関係を作成するには?
あなたが持っている最大の問題は、この「データベースである主が含まれていませんまたは外部キー。貧弱なデータベース設計のために良いコードを補うことはできません。 –
システムに変更を加える必要がありますが、変更は許可されていませんか? – GuidoG
私はシステムで変更を行う必要はありません、私が必要なのはちょうどいくつかの選択をすることです。 – zxyzxy