数据库和代码之间的连接
本文关键字:连接 之间 代码 数据库 | 更新日期: 2023-09-27 18:34:51
我有一个错误:
One or more validation errors were detected during model generation:
'tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'DynamicMenu' has no key defined. Define the key for this EntityType.
'tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet 'ambt_Dynamic_Menu' is based on type 'DynamicMenu' that has no keys defined.
在帮助程序类中,其代码是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Data.Models;
using Data;
namespace Ambermoda.Web
{
public class MenuHelper
{
public static List<DynamicMenu> GetMenu()
{
DataContext db = new DataContext();
List<DynamicMenu> list = db.ambt_Dynamic_Menu.ToList();
return list;
}
}
}
所以我不知道如何解决它。我检查了(在我看来(可能产生此错误的所有内容,但有任何结果。
我是类似的帖子,但任何一个都不能解决我的问题。
如果有人有什么想法,请写:)
谢谢!
更多代码
动态菜单.cs
[Table("abmt_Dynamic_Menu")]
public class DynamicMenu
{
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int dmn_id { get; set; }
public string dmn_code { get; set; }
public string dnm_parent_code { get; set; }
public string dnm_title { get; set; }
public string dnm_title_en { get; set; }
public int dnm_order { get; set; }
}
数据上下文.cs
public class DataContext : DbContext
{
public DataContext() { }
public DbSet<DynamicMenu> ambt_Dynamic_Menu { get; set; }
}
连接字符串:
<add name="DataContext" providerName="System.Data.SqlClient" connectionString="Data Source=Mikasasa-lap'Mikasasa;Database=Ambermoda;Integrated Security=True;Pooling=False;"/>
根据你提供的源代码,你使用的是代码优先方法。
CF 假定类应具有按命名约定命名为"Id"的属性,并且此属性将被视为主键。
否则,应通过属性 [Key] 或使用 fluent API 手动声明主键(请参阅 EntityTypeConfiguration.HasKey 方法(。
您需要告知哪个字段是数据库主键。使用属性 Key
执行此操作:
[Table("abmt_Dynamic_Menu")]
public class DynamicMenu
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int dmn_id { get; set; }
public string dmn_code { get; set; }
public string dnm_parent_code { get; set; }
public string dnm_title { get; set; }
public string dnm_title_en { get; set; }
public int dnm_order { get; set; }
}
检查 DyanmicMenu 表是否有主键