0

我在这里看到了几个问题,但我找不到解决方案。配置VS localDB和EF部署

我有一个winform应用程序VS2013与EF运行一个LocalDB。这个LocalDB是从模型创建的。

我应该怎么做才能在客户端上使用LocalDB安装此应用程序?

我是否需要向解决方案添加MDF文件? 要做什么?

有类似的问题:localDB DeploymentInstaller

+0

什么是你计划使用部署?点击一次?让你自己的引导程序链MSIS?如果用户要从空数据库开始,则不需要包含mdf,因为如果您设置了连接字符串和正确的初始化程序,EF可以为您创建一个。 – jjj

回答

2
  1. 你可能已经安装了 “的LocalDB”。 您的客户需要一个安装程序。

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

  • 您需要填充种子数据。看到这个帖子:
  • 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(); 
        } 
    } 
    
  • 您的客户端应用程序将需要正确的连接字符串。
  • https://www.connectionstrings.com/sqlconnection/localdb-automatic-instance-with-specific-data-file/

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

    但随着 “种子数据” overload..it应该能够动态地创建它。

    这里是做一个例子,只是我相信:

    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(); 
         } 
        } 
    } 
    
    +0

    我会尝试这些步骤,看起来没错。谢谢。 – grteibo

    +0

    在您的开发机器上搜索“SQLLOCALDB.MSI”使用此工具(http://www.voidtools.com/downloads/)快速找到它。 MSI可能是你所需要的。 – granadaCoder