オブジェクトを特定のエンティティ セットに追加する方法 (Entity Framework)

このトピックでは、トピック「Multiple-Entity-Sets-per-Type でモデルを定義する方法 (Entity Framework)」で設計された Entity Data Model (EDM) を使用します。

Multiple-Entity-Sets-per-Type を使用してアプリケーションを作成するには

  1. コンソール アプリケーション プロジェクトを作成し、System.Data.Entity および System.Runtime.Serialization への参照を追加します。

  2. トピック「Multiple-Entity-Sets-per-Type でモデルを定義する方法 (Entity Framework)」で定義されたデータ モデルからビルドされた DLL への参照を追加します。

  3. アプリケーション構成ファイルを追加します。次の構文は、スキーマ メタデータへのパスと、データをホストしているサーバーへの接続文字列を指定しています。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="RegionalCustomersEntities" 
         connectionString="metadata=.;
         provider=System.Data.SqlClient;
         provider connection string=&quot;
         Data Source=serverName;
         Initial Catalog=RegionalCustomersMEST;
         Integrated Security=True;
         multipleactiveresultsets=true&quot;" 
         providerName="System.Data.EntityClient" />
  </connectionStrings>

</configuration>

西部地域を表すエンティティ セットへの顧客および注文のエンティティの追加

次のコードでは、Customer 型の新しいインスタンスを作成し、西部地域を表すエンティティ セットに追加します。

同じ型のエンティティを別個のエンティティ セットに追加するには

  1. CustomerWest 型のインスタンスを作成し、顧客の CustomerIdName、および TotalPurchases の各プロパティを初期化します。

  2. OrderWest 型のインスタンスを作成し、注文のプロパティを初期化します。

  3. 手順 1. で作成した顧客を新しい注文に割り当てます。

  4. AddTCustomersWest メソッドおよび AddToOrdersWest メソッドを使用して、CustomerWest および OrderWest のインスタンスをストレージに追加します。これらのメソッドは、データ モデルが Edmgen.exe によって生成されるときに作成されます。

  5. newOrder という名前の別の OrderWest インスタンスを作成します。

  6. 手順 1. で作成した顧客に対するクエリで使用する ObjectParameter を作成します。

  7. クエリを実行して顧客を検索します。

  8. newOrderTotalAmount プロパティを顧客の TotalPurchases に追加して、顧客の TotalPurchases プロパティを更新します。

  9. 顧客を newOrder に割り当てます。

  10. AddToOrdersWest メソッドを使用して、newOrder をストレージに追加します。

Option Explicit On
Module Module1
    Sub Main()
        Try
            Using objCtx As RegionalCustomersEntities = _
                        New RegionalCustomersEntities()

                ' Create a new customer.
                Dim customerWest As New Customer()
                customerWest.CustomerId = _
                         objCtx.CustomersWest.Count() + 1
                customerWest.Name = _
                         "CustomerWest " + _
                              customerWest.CustomerId.ToString()
                customerWest.TotalPurchases = CType(875, Decimal)

                ' Create Order.
                Dim orderWest As New OrderWest()
                orderWest.OrderId = _
                         objCtx.OrdersWest.Count() + 1
                orderWest.OrderTotal = customerWest.TotalPurchases
                orderWest.Tax = _
                         orderWest.OrderTotal * CType(0.07, Decimal)

                orderWest.Customer = customerWest

                ' Add customer and order to object context.
                objCtx.AddToCustomersWest("customerWest)
                objCtx.AddToOrdersWest(orderWest)

                objCtx.SaveChanges()

                ' Add order to existing customer.
                Dim newOrder As New OrderWest
                newOrder.OrderId = objCtx.OrdersWest.Count + 1
                newOrder.OrderTotal = CType(338.0, Decimal)
                newOrder.Tax = newOrder.OrderTotal * CType(0.07, Decimal)

                Dim param As New ObjectParameter("p", 3)
                If Not 0 = objCtx.CustomersWest. _
                      Where("it.CustomerId = @p", param).Count() Then
                    Dim c As Customer = _
                        objCtx.CustomersWest. _
                        Where("it.CustomerId = @p", param).FirstOrDefault()

                    c.TotalPurchases = c.TotalPurchases + newOrder.OrderTotal

                    newOrder.Customer = c
                    objCtx.SaveChanges()

                End If

            End Using
        Catch ex As Exception
            Console.WriteLine(ex.ToString())
        End Try
    End Sub
End Module
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RegionalCustomersModel;
using System.Data.Objects;

namespace ClientRegionalCustomers
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                using (RegionalCustomersEntities objCtx = 
                           new RegionalCustomersEntities())
                {
                    // Create a new customer.
                    Customer customerWest = new Customer();

                    customerWest.CustomerId =
                        objCtx.CustomersWest.Count<Customer>() + 1;

                    customerWest.Name = 
                        "Customer West " + 
                        customerWest.CustomerId.ToString();

                    customerWest.TotalPurchases = 
                        (decimal)875.00;

                    // Create Order.
                    OrderWest orderWest = new OrderWest();
                    orderWest.OrderId = 
                        objCtx.OrdersWest.Count<OrderWest>() + 1;

                    orderWest.OrderTotal = 
                        customerWest.TotalPurchases;
                    orderWest.Tax = 
                        orderWest.OrderTotal * (decimal).07;

                    orderWest.Customer = customerWest;

                    // Add customer and order to object context.
                    objCtx.AddToCustomersWest(customerWest);
                    objCtx.AddToOrdersWest(orderWest);

                    objCtx.SaveChanges();

                    // Add an order to existing customer.
                    OrderWest newOrder = new OrderWest();
                    newOrder.OrderId =
                        objCtx.OrdersWest.Count<OrderWest>() + 1;
                    newOrder.OrderTotal = (decimal)338.00;
                    newOrder.Tax = 
                               newOrder.OrderTotal * (decimal).07;

                    ObjectParameter param = 
                        new ObjectParameter("p", 3);
                    if (0 != objCtx.CustomersWest.Where(
                        "it.CustomerId = @p",
                         param).Count<Customer>())
                    {
                        Customer c =
                            objCtx.CustomersWest.Where(
                            "it.CustomerId = @p", 
                            param).First<Customer>();

                        c.TotalPurchases =
                            c.TotalPurchases + newOrder.OrderTotal;

                        newOrder.Customer = c;
                        
                        objCtx.SaveChanges();
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }
    }
}

参照

処理手順

Multiple-Entity-Sets-per-Type でモデルを定義する方法 (Entity Framework)
Multiple-Entity-Sets-per-Type を使用してオブジェクト クエリを作成および実行する方法 (Entity Framework)