zoukankan      html  css  js  c++  java
  • Entity Framework Code First for SQL Compact

    这篇博客将介绍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的方式对数据库进行增删改查操作。

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

  • 相关阅读:
    November 07th, 2017 Week 45th Tuesday
    November 06th, 2017 Week 45th Monday
    November 05th, 2017 Week 45th Sunday
    November 04th, 2017 Week 44th Saturday
    November 03rd, 2017 Week 44th Friday
    Asp.net core 学习笔记 ( Area and Feature folder structure 文件结构 )
    图片方向 image orientation Exif
    Asp.net core 学习笔记 ( Router 路由 )
    Asp.net core 学习笔记 ( Configuration 配置 )
    qrcode render 二维码扫描读取
  • 原文地址:https://www.cnblogs.com/yang-fei/p/4734771.html
Copyright © 2011-2022 走看看