【问题标题】:Configure VS with localDB and EF for deploy使用 localDB 和 EF 配置 VS 以进行部署
【发布时间】:2015-11-08 15:34:00
【问题描述】:

我在这里看了几个问题,但我找不到解决方案。

我有一个带有 EF 的 Winform 应用程序 VS2013,运行 LocalDB。这个 LocalDB 是根据模型创建的。

我应该怎么做才能在客户端上安装这个带有 LocalDB 的应用程序?

我需要在解决方案中添加 MDF 文件吗? 步骤是什么?

有类似问题:localDB Deployment,Installer

【问题讨论】:

  • 您打算使用什么进行部署?点击一次?制作自己的引导程序来链接 msis?如果用户要从空数据库开始,则不需要包含 mdf,因为如果您设置了连接字符串和正确的初始化程序,EF 可以为您创建一个。

标签: sql-server winforms entity-framework visual-studio-2013 localdb


【解决方案1】:
  1. 您可能已经安装了“LocalDB”。 您的客户需要安装程序。

http://www.microsoft.com/en-us/download/details.aspx?id=42299

  1. 您需要填充种子数据。看到这篇文章:

Recreate and Reseed LocalDb Before Each Unit Test

public class MyDatabaseInitializer :     System.Data.Entity.DropCreateDatabaseAlways<MyDbContext>
{
    protected override void Seed(MyDbContext context)
    {
        // Add entities to database.

        context.SaveChanges();
    }
}
  1. 您的客户端应用需要正确的连接字符串。

https://www.connectionstrings.com/sqlconnection/localdb-automatic-instance-with-specific-data-file/

Server=(localdb)\v11.0;Integrated Security=true;
AttachDbFileName=C:\MyFolder\MyData.mdf;

但是由于“种子数据”过载..它应该能够即时创建它。

这是一个我相信的例子:

https://code.msdn.microsoft.com/ASPNET-MVC-Application-b01a9fe8

namespace ContosoUniversity.DAL
{
    public class SchoolInitializer : System.Data.Entity.DropCreateDatabaseIfModelChanges<SchoolContext>
    {
        protected override void Seed(SchoolContext context)
        {
            var students = new List<Student>
            {
            new Student{FirstMidName="Carson",LastName="Alexander",EnrollmentDate=DateTime.Parse("2005-09-01")},
            new Student{FirstMidName="Meredith",LastName="Alonso",EnrollmentDate=DateTime.Parse("2002-09-01")},
            new Student{FirstMidName="Arturo",LastName="Anand",EnrollmentDate=DateTime.Parse("2003-09-01")},
            new Student{FirstMidName="Gytis",LastName="Barzdukas",EnrollmentDate=DateTime.Parse("2002-09-01")},
            new Student{FirstMidName="Yan",LastName="Li",EnrollmentDate=DateTime.Parse("2002-09-01")},
            new Student{FirstMidName="Peggy",LastName="Justice",EnrollmentDate=DateTime.Parse("2001-09-01")},
            new Student{FirstMidName="Laura",LastName="Norman",EnrollmentDate=DateTime.Parse("2003-09-01")},
            new Student{FirstMidName="Nino",LastName="Olivetto",EnrollmentDate=DateTime.Parse("2005-09-01")}
            };

            students.ForEach(s => context.Students.Add(s));
            context.SaveChanges();
            var courses = new List<Course>
            {
            new Course{CourseID=1050,Title="Chemistry",Credits=3,},
            new Course{CourseID=4022,Title="Microeconomics",Credits=3,},
            new Course{CourseID=4041,Title="Macroeconomics",Credits=3,},
            new Course{CourseID=1045,Title="Calculus",Credits=4,},
            new Course{CourseID=3141,Title="Trigonometry",Credits=4,},
            new Course{CourseID=2021,Title="Composition",Credits=3,},
            new Course{CourseID=2042,Title="Literature",Credits=4,}
            };
            courses.ForEach(s => context.Courses.Add(s));
            context.SaveChanges();
            var enrollments = new List<Enrollment>
            {
            new Enrollment{StudentID=1,CourseID=1050,Grade=Grade.A},
            new Enrollment{StudentID=1,CourseID=4022,Grade=Grade.C},
            new Enrollment{StudentID=1,CourseID=4041,Grade=Grade.B},
            new Enrollment{StudentID=2,CourseID=1045,Grade=Grade.B},
            new Enrollment{StudentID=2,CourseID=3141,Grade=Grade.F},
            new Enrollment{StudentID=2,CourseID=2021,Grade=Grade.F},
            new Enrollment{StudentID=3,CourseID=1050},
            new Enrollment{StudentID=4,CourseID=1050,},
            new Enrollment{StudentID=4,CourseID=4022,Grade=Grade.F},
            new Enrollment{StudentID=5,CourseID=4041,Grade=Grade.C},
            new Enrollment{StudentID=6,CourseID=1045},
            new Enrollment{StudentID=7,CourseID=3141,Grade=Grade.A},
            };
            enrollments.ForEach(s => context.Enrollments.Add(s));
            context.SaveChanges();
        }
    }
}

【讨论】:

  • 在您的开发机器上搜索“SQLLOCALDB.MSI” 使用此工具 (voidtools.com/downloads) 快速找到它。 MSI 可能就是您所需要的。
猜你喜欢
  • 2013-03-20
  • 1970-01-01
  • 1970-01-01
  • 2010-10-08
  • 1970-01-01
  • 2016-09-20
  • 1970-01-01
  • 2017-06-01
  • 1970-01-01
相关资源
最近更新 更多