• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

在Blazor Server 项目中使用 EF Core Sqlite

C# kqw 2795次浏览 0个评论

按照教程创建了一个 Blazor Server 项目 教程地址: https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/build-a-blazor-app?view=aspnetcore-5.0 还有一个教程是:https://www.cnblogs.com/MSReactor/p/14315549.html   首页在启动时,从MenuService  获取菜谱列表

menus = await Mmservise.GetMenuAsync(DateTime.Now);

 

做组件时候,MenuService是这样写的

public class MenuService
    {
 
        public  Task< List<Menu> > GetMenuAsync(DateTime startDate)
        {
 
            List<Menu> meuns = new List<Menu>();
            string[] days = new string[] { "2021-02-06", "2021-02-07", "2021-02-08" };
            var rng = new Random();
 
            foreach (string daystr in days)
            {
                Menu a = new Menu { ID = Guid.NewGuid(), Name = "红烧鱼", MenuDay = Convert.ToDateTime(daystr), DefaultNamber = 1, Price = rng.Next(5, 30), Type = "午餐" };
                Menu b = new Menu { ID = Guid.NewGuid(), Name = "大盘鸡", MenuDay = Convert.ToDateTime(daystr), DefaultNamber = 1, Price = rng.Next(5, 30), Type = "午餐" };
                Menu c = new Menu { ID = Guid.NewGuid(), Name = "烤肉", MenuDay = Convert.ToDateTime(daystr), DefaultNamber = 1, Price = rng.Next(5, 30), Type = "午餐" };
                Menu d = new Menu { ID = Guid.NewGuid(), Name = "油条豆浆", MenuDay = Convert.ToDateTime(daystr), DefaultNamber = 1, Price = rng.Next(5, 30), Type = "早餐" };
                Menu e = new Menu { ID = Guid.NewGuid(), Name = "炸酱面", MenuDay = Convert.ToDateTime(daystr), DefaultNamber = 1, Price = rng.Next(5, 30), Type = "晚餐" };
 
                meuns.Add(a);
                meuns.Add(b);
                meuns.Add(c);
                meuns.Add(d);
                meuns.Add(e);
            }
 
            return Task.FromResult(meuns);
 
        }
    }

 

  在 陈超超 的教程里,是新建立了  WebAPI接口 给 APP 提供后台支持, 我想着既然已经是 Blazor Server 项目了,能不能直接在 Server 用 EF 呢。   尝试过程: 1) 创建 DbContext

public class BlazorApp0206Context: DbContext
    {
        public DbSet<Menu> Menus { get; set; }
 
        protected override void OnConfiguring(DbContextOptionsBuilder options)
            => options.UseSqlite("Data Source=BlazorApp0206.db");
    }

 

  2)迁移数据库

Install-Package Microsoft.EntityFrameworkCore.Tools
Add-Migration InitialCreate0209
Update-Database

 

 3)修改 MenuService  

public class MenuService
    {
 
        public  Task< List<Menu> > GetMenuAsync(DateTime startDate)
        {
            using (var db = new BlazorApp0206Context())
            {
                var meuns = db.Menus.ToList<Menu>();
                return Task.FromResult(meuns);
            }
        }
    }
}

 

  4) 工作目录不一致 的问题,直接照抄文档: 运行 .NET Core 控制台应用时,Visual Studio 使用不一致的工作目录。 (请参阅 dotnet/project-system#3619)这会导致引发异常: 无此类表格:博客 。 更新工作目录: 右键单击项目,并选择“编辑项目文件” 在 TargetFramework 属性下方,添加以下内容: XML <StartWorkingDirectory>$(MSBuildProjectDirectory)</StartWorkingDirectory> 保存该文件 现在可以运行应用: “调试”>“开始执行(不调试)”   最后来个截图
在Blazor Server 项目中使用 EF Core Sqlite   参考资料: https://docs.microsoft.com/zh-cn/aspnet/core/blazor/blazor-server-ef-core?view=aspnetcore-5.0 https://docs.microsoft.com/zh-cn/ef/core/get-started/overview/first-app?tabs=visual-studio https://www.cnblogs.com/MSReactor/p/14380219.html  


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明在Blazor Server 项目中使用 EF Core Sqlite
喜欢 (0)

您必须 登录 才能发表评论!

加载中……