EF にマップすると、5 つの結合を持つデータの選択を返すストアド プロシージャがあり、そのストアド プロシージャの複合型モデルを作成しています。この複雑な型を、ストアド プロシージャが返す列をさらに持つ別のモデル クラスに変更できますか? それとも同じ数の列を返す必要がありますか?
ありがとう
たとえば、選択した顧客を返すストアド プロシージャがあります。
CREATE PROCEDURE [dbo].[CustomersSelect]
AS
SELECT [CustomerID]
,[CompanyName]
,[ContactName]
,[ContactTitle]
,[Address]
,[City]
FROM [Northwind].[dbo].[Customers]
このストアド プロシージャを EF にインポートし、特定の複合型を使用する代わりに、Customer クラスにマップしたいと考えています。
public partial class Customer
{
public Customer()
{
this.Orders = new HashSet<Order>();
}
public string CustomerID { get; set; }
public string CompanyName { get; set; }
public string ContactName { get; set; }
public string ContactTitle { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string Region { get; set; }
public string PostalCode { get; set; }
public string Country { get; set; }
public string Phone { get; set; }
public string Fax { get; set; }
public virtual ICollection<Order> Orders { get; set; }
}
コントローラーでは、このストアド プロシージャを使用しようとしています。
public ActionResult About()
{
var model = context.CustomersSelect();
return View(model);
}
この About() アクションを実行すると、次のエラーが表示されます。
データ リーダーは、指定された 'EfMvc4Model.Customer' と互換性がありません。タイプ 'Region' のメンバーには、データ リーダーに同じ名前の対応する列がありません。
これについて何か助けはありますか?
ありがとうございました