c# - ef form app c# code first with sqlite error db.SaveChanges no such a table
问题描述
我有一个 ef 表单应用程序,我尝试在产品表上添加一些产品。当我开始项目时,shop.db 正在生成文件并且我可以看到表(产品和类别)但是当我尝试将任何产品添加到产品表时,我正在接受“SqliteException:SQLite 错误 1:'没有这样的表: ProductModels'。” 错误。
'SaveChanges (db);' 导致错误。
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
public class ShopContext : DbContext
{
public DbSet<ProductModel> ProductModels { get; set; }
public DbSet<CategoryModel> CategorieModels { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder
.UseSqlite("Data Source=shop.db");
}
}
public class ProductModel
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
public class CategoryModel
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Class1
{
public void AddProduct()
{
using (var db = new ShopContext())
{
var p = new ProductModel();
p.Name = "Samsung s6";
p.Price = 100000;
db.ProductModels.Add(p);
db.SaveChanges();
}
}
}
我有一个表格。它包含一个按钮和一个文本。当我单击按钮时,我希望将产品添加到数据库和要写入的文本。表单代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.EntityFrameworkCore;
namespace WindowsFormsApp4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void button1_Click(object sender, EventArgs e)
{
Class1 c = new Class1();
c.AddProduct();
label1.Text = "Yazı";
}
}
}
如何解决?
解决方案
除非另有说明,否则 EF 正在寻找一个名为ProductModel
但不存在的表。
您可以将您的 DbSet 重命名为:(我会推荐这个)
public DbSet<ProductModel> Product { get; set; }
public DbSet<CategoryModel> Category { get; set; }
或者您可以在模型中显式设置表名:
[Table("Product")]
public class ProductModel
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
推荐阅读
- android - 无法将 Lyft API 集成到 Android 应用程序中
- .net - 具有可配置服务实现的 Net Core 中的依赖注入
- youtube-api - 有没有办法使用 Youtube API 从 maxResults 获得超过 50 个结果?
- google-bigquery - 在 BigQuery 中,根据第二个值表按排序顺序连接列
- javascript - 如何找到 3D 数组中的最大数?
- r - R不会将文本文件的所有行加载到表中
- ios - UIViewController 内的 UIScrollView 不水平滚动
- sed - sed 从一个文件中读取整行并替换另一个文件中的行
- swift - 快速解决旧的面试问题
- html - 在引导装订线中放置一个元素