13

Entity Framework 코드 첫 번째 규칙의 스타일로 클래스 집합을 정의하고 System.ComponentModel.DataAnnotations 특성을 사용하여 클래스 속성을 주석으로 지정했습니다.EF 코드 첫 번째 DbContext 클래스에서 SQL CE 데이터베이스 생성

이제이 코드에서 SQL Server Compact Edition (SCSE) (4.0) 데이터베이스를 생성하려고합니다.

어떤 코드가 필요하며 가져올 어셈블리는 무엇입니까?

지금까지 C : \ Program Files (Microsoft) SQL Server Compact Edition \ v4.0 \ Desktop {System.Data.SqlServerCe.dll, System.Data.SqlServerCe.Entity \ System]을 가져 왔습니다. Data.SqlServerCe.Entity.dll} dll 파일.

감사합니다. 기사와 겹침 선반.

답변

15

해결책을 찾았습니다.

DbDatabase.DefaultConnectionFactory = new 
         SqlCeConnectionFactory("System.Data.SqlServerCe.4.0"); 

여기에 전체 샘플은 다음과 같습니다 : 중요한 것은이 코드 라인

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace Proto 
{ 
    using System.Data; 
    using System.Data.Entity; 
    using System.Data.Entity.Database; 
    using System.Data.SqlServerCe; 
    using System.ComponentModel.DataAnnotations; 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      DbDatabase.DefaultConnectionFactory = new 
         SqlCeConnectionFactory("System.Data.SqlServerCe.4.0"); 
      DbDatabase.SetInitializer(
         new DropCreateDatabaseIfModelChanges<ProtoCatalog>() 
       ); 

      using (var db = new ProtoCatalog()) 
      { 
       var user = new User 
       { 
        Name = "bob", 
        Password = "123", 
        Creation = DateTime.Now, 
        PrimaryEmailAddress = "[email protected]" 
       }; 

       db.Users.Add(user); 

       db.SaveChanges(); 

       Console.ReadKey(); 
      } 
     } 
    } 

    public class ProtoCatalog : DbContext 
    { 
     public DbSet<User> Users { get; set; } 
    } 

    public class User 
    { 
     [Key, StringLength(50)] 
     public string Name { get; set; } 

     [Required, StringLength(100)] 
     public string Password { get; set; } 

     [Required, StringLength(320)] 
     public string PrimaryEmailAddress { get; set; } 

     [StringLength(320)] 
     public string SecondaryEmailAddress { get; set; } 

     [Required] 
     public DateTime Creation { get; set; } 

     public bool Active { get; set; } 
    } 
} 
이 API는 아마하지만 EF 코드 - 먼저 CTP 5 RTM 사이에 변경됩니다, 그러나 이것은 어떻게하는지입니다

지금.

나는 작은 blog post을 만들었습니다.

2

가장 좋은 방법은 NuGet를 설치하고 EF CodeFirst 및 SQL CE 4 개 패키지와 함께 연주했다, 또한이 샘플을 NuGet에서 설치할 수 있습니다. 여기에는 모든 db 작성 전략에 대한 코드 예제가 있습니다. "AppStart_SQLCEEntityFramework.cs는"예는 그 참조라는 파일을해야한다 프로젝트 디렉토리의 루트에

install-package EFCodeFirst.SqlServerCompact 
install-package EFCodeFirst.Sample 

: 당신이 뭔가를 할 것입니다.

+0

감사! 방금 Visual C# Express를 집에 설치했지만 변경 될 수 있습니다. –

2

DefaultConnectionProvider를 제공하는 또 다른 방법은 app.config에 추가하는 것입니다.

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework"> 
    <parameters> 
     <parameter value="System.Data.SqlServerCe.4.0" /> 
    </parameters> 
    </defaultConnectionFactory> 
</entityFramework> 
관련 문제