データベースの作成
LINQ to SQLを使うとDDLを書かずにデータベース、テーブルが作れるのが良いですね。外部キーもちゃんと張られますし。
(追記)
これはLINQ to SQLじゃなくてLINQ to Entitiesなのかな。LINQ toほにゃららの区別がついてないです。(^^;
SQL Server 2005 compactSQL Server compact 3.5向け。
using System; using System.Linq; using System.Data.Linq.Mapping; using System.Data.Linq; namespace ConsoleApplication1 { [Table(Name = "Customers")] public class Customer { [Column(Name="Customer ID", IsPrimaryKey = true)] public string CustomerID; // not null [Column(CanBeNull=false)] public string City; // DBの型を直接指定することも可能 [Column(DbType="nvarchar(15) not null")] public string Country; EntitySet<Order> orders; /// <summary> /// 1:Nリレーション。 /// </summary> /// <remarks> /// リレーションにはThisKey(Customer側)とOtherKey(Order側)を指定する。 /// ただし、Keyがプライマリキーの場合は省略可能。 /// Customer側はプライマリキーなので省略している。 /// Order側はCustomerIDプロパティを指定している。 /// 指定するのはDBのカラム名ではなく、プロパティ名なことに注意。 /// </remarks> [Association(Storage = "orders", OtherKey = "CustomerID")] public EntitySet<Order> Orders { get { return orders; } set { orders.Assign(value); } } } [Table(Name = "Orders")] public class Order { [Column(Name="Order ID", IsPrimaryKey = true)] public int OrderID; [Column(Name="Customer ID")] public string CustomerID; [Column(Name = "Ship Via")] public int ShipVia; EntityRef<Customer> customer; /// <summary> /// N:1リレーション。 /// </summary> /// <remarks> /// リレーションにはThisKey(Order側)とOtherKey(Customer側)を指定する。 /// ただし、Keyがプライマリキーの場合は省略可能。 /// Customer側はプライマリキーなので省略している。 /// Order側はCustomerIDプロパティを指定している。 /// 指定するのはDBのカラム名ではなく、プロパティ名なことに注意。 /// </remarks> [Association(Storage = "customer", ThisKey = "CustomerID")] public Customer Customer { get { return customer.Entity; } set { customer.Entity = value; } } } public partial class MyDatabase : DataContext { public Table<Customer> Customers; public Table<Order> Orders; public MyDatabase(string connection) : base(connection) { } } class Program { static void Main(string[] args) { var db = new MyDatabase(@"c:\home\MyDatabase.sdf"); // データベースが存在する場合は、削除して作り直す。 if (db.DatabaseExists()) db.DeleteDatabase(); db.CreateDatabase(); } } }
指定したディレクトリにMyDatabase.sdfが出来ているはずです。