既存の実動データベースを使用してMVCアプリケーションを作成していますが、データ型の不一致により、親クラスの仮想プロパティを正しく設定できません。次のように私のコードは次のとおりです。既存のデータベースをEFにマッピングするデータ型の不一致
public class bill {
public int billId { get; set; }
.........
}
public class meter {
public int meterId { get; set; }
public int billId { get; set; }
.....
}
public class payment {
public int paymentId { get; set; }
public long billId { get; set; }
......
}
私は法案クラスに次を追加しました:
public virtual ICollection<meter> Meters { get; set; }
public virtual ICollection<payment> Payments { get; set; }
私は、関連メートルを取得することができていますが、支払期日におけるbillid
の長いデータ型に私はエラーを取得します。元のデータベースに影響を与えるコードの最初のモデルに変更を加えなければ、これを正しくマッピングする方法はありますか?
私はエラーを取得しています:
Invalid column name 'bill_billId'.
Invalid column name 'bill_billId'.
Invalid column name 'bill_billId'.
次のように表示しよう:
現在使用中のデータベースが誤ってしばらく子クラス用の長いデータ型を使用するように設定されて
@foreach (var m in Model.Meters.Where(x => x.archived != true && x.meterUnitsUsed > 0))
{
<tr>
<td>@Html.DisplayFor(x => m.meterSerialNumber)</td>
<td>@Html.DisplayFor(x => m.meterOpeningRead)</td>
<td>@Html.DisplayFor(x => m.meterClosingRead)</td>
<td>@Html.DisplayFor(x => m.meterUnitsUsed)</td>
<td>@Html.DisplayFor(x => m.archived)</td>
<td>@Html.DisplayFor(x => m.meterUnitType)</td>
<td>@Html.DisplayFor(x => m.meterUnitPrice)</td>
<td>@Html.DisplayFor(x => m.meterAmount)</td>
@foreach (var i in Model.LiftsRefunds.Where(i => i.archived != true))
{
<td>@Html.DisplayFor(x => i.liftRefundDate)</td>
<td>@Html.DisplayFor(x => i.liftRefundAmount)</td>
<td>@Html.DisplayFor(x => i.liftType)</td>
}
</tr>
}
親クラスの主キーはintです。これを無視し、支払いを仮想プロパティとして参照できるようにintをlongにマップするEFを設定する方法はありますか?エラーのために
さて、 'meter'クラスに' billId'をintとして持っています。それは長くてはいけませんか? – ESG
さらに、エラーが発生していると言う場合は、常に**正確なエラーメッセージを提供する必要があります。テーブル定義も役立ちます。 – ESG
メータークラスは正常に動作していますが、ペイメントテーブルにはbillidが長く設定されていますが、billidとmeteridで両方ともintに設定されています。私のコンテキストを変更してもデータベースは変更されません。 – Jay