码迷,mamicode.com
首页 > 数据库 > 详细

Entity Framework Code First for SQL Compact

时间:2017-09-14 23:45:59      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:msdn   应用   asp   int   dep   lin   sdn   位置   produce   

这篇博客将介绍EF Code First中如何使用SQL Compact。SQL Compact是微软推出的免费的关系型数据库,目前最新版本是SQL Compact 4.0。微软的开发工具VS 2010/SQL Server 2008及后续版本中均不带有SQL Compac 3.5/4.0t数据库查看工具。不过CodePlex上有一个SqlCeToolbox的工具非常不错。有点儿像精简版的SQL Server Management Studio。

SQL Compact可以用于以下的一些场景,例如在WindowPhone的应用,桌面程序等(当然也可以使用Sqlite)。下面通过一个例子介绍如何使用EF Code First生成SQL Compact数据库。

1. 在程序中引用Entity Framework for SQL Compact相关DLL,可以通过Nuget,命令:PM> Install-Package EntityFramework.SqlServerCompact (注意如果需要生成SQL Compact 3.5,Nuget命令:Install-Package EntityFramework.SqlServerCompact.Legacy)

2. 项目结构:Models中存放的是数据库实体类(Actor.cs/FilmActorRole.cs/FilmGenere.cs/FilmTitle.cs/Producer.cs/Role.cs),Context中存放数据库上下文(DvdContext.cs)。因为是一个Demo,就把这些放在一个工程下面。在真实项目中,建议把Models/Context分别放在不同的类库中,这样便于维护,程序的结构也更加清晰。

技术分享

下面展示一下FilmActorRole类,程序中使用EntityFramework DataAnnotations的方式来描述Model类,

技术分享
    [Table("FilmActorRole")]
    public class FilmActorRole
    {
        [Key]
        public int Id { get; set; }

        [Required]
        public int FilmTitleId { get; set; }

        [ForeignKey("FilmTitleId")]
        public FilmTitle FileTitle { get; set; }

        [Required]
        public int ActorId { get; set; }

        [ForeignKey("ActorId")]
        public Actor Actor { get; set; }

        [Required]
        public int RoleId { get; set; }

        [ForeignKey("RoleId")]
        public Role Role { get; set; }

        [Required]
        [StringLength(255)]
        public string Character { get; set; }

        [Required]
        [StringLength(1024)]
        public string Description { get; set; }
    }
技术分享

关于EntityFramework DataAnnotations的内容,请参考:https://msdn.microsoft.com/en-us/data/jj591583.aspx

DvdContext.cs

技术分享
    public class DvdContext : DbContext
    {
        public DbSet<Actor> Actors{ get; set; }

        public DbSet<FilmActorRole> FilmActorRoles { get; set; }

        public DbSet<FilmGenere> FilmGeneres { get; set; }

        public DbSet<FilmTitle> FilmTitles { get; set; }

        public DbSet<Producer> Producers { get; set; }

        public DbSet<Role> Roles { get; set; }

        public DvdContext()
            :base("DvdConnectionString")
        {

        }
    }
技术分享

在App.config中需要配置DvdConnectionString,

  <connectionStrings>
    <add name="DvdConnectionString" connectionString="Data source=|DataDirectory|DvdDatabase.sdf;" providerName="System.Data.SqlServerCe.4.0"/>
  </connectionStrings>

上面的配置文件中有一个DataDirectory,这表示数据库存放的目录。通常情况下会把数据库放置在一个特殊位置,例如用户文件夹下,这样在程序卸载时不会被删除掉。我们需要在程序启动时,设置DataDirectory,例如:

        static void Main(string[] args)
        {
            // 设置Database的位置:
            AppDomain.CurrentDomain.SetData("DataDirectory", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
        }

下面看如何生成当前数据库:

技术分享
    using (DvdContext db = new DvdContext())
    {
        if(!db.Database.Exists())
        {
            db.Database.Create();
        }
    }
技术分享

我们可以使用LINQ的方式对数据库进行增删改查操作。

感谢您的阅读,代码点击这里下载。

 

Entity Framework Code First for SQL Compact

标签:msdn   应用   asp   int   dep   lin   sdn   位置   produce   

原文地址:http://www.cnblogs.com/wangchaoyuana/p/7523402.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!