数据库和代码之间的连接

时间:2012-05-22 10:23:58

标签: c# sql-server asp.net-mvc

我有一个错误:

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;
        }
    }
}

所以我不知道如何解决它。我检查了一切(在我看来)可以产生这个错误,但有任何结果。

我发了类似的帖子,但其中任何一个都没有解决我的问题。

如果有人有任何想法,请写下来:)

谢谢!

更多代码

DynamicMenu.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; }
    }

DataContext.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;"/>

3 个答案:

答案 0 :(得分:2)

根据您提供的源代码,您正在使用Code First方法 CF假定该类应具有命名约定的名为“Id”的属性,并且此属性将被视为主键。

否则,您应该通过属性[Key]或使用流畅的API手动声明主键(请参阅EntityTypeConfiguration.HasKey方法)。

答案 1 :(得分:1)

您需要通知数据库主键是哪个字段。使用属性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; }
}

答案 2 :(得分:0)

检查DyanmicMenu表是否具有主键