Asp.net mvc 4 例外情况:;类型未映射";在entityframework中,首先使用层进行编码

Asp.net mvc 4 例外情况:;类型未映射";在entityframework中,首先使用层进行编码,asp.net-mvc-4,entity-framework-6,code-first,Asp.net Mvc 4,Entity Framework 6,Code First,我试图将层的概念应用到使用mvc和实体框架开发的演示项目中 数据注释:用于数据访问层和 Fluent API:用于映射和表关系 问题:DbContext未创建DB,存在运行时异常: 未映射类型“Domain.DataLayer.Member”。检查是否未使用Ignore方法或NotMappeAttribute数据批注明确排除该类型。验证该类型是否定义为类、是否为基元、嵌套或泛型,以及是否从EntityObject继承。 代码:我的解决方案包括: 1-类库(Domain.Classes项目):我在

我试图将层的概念应用到使用mvc和实体框架开发的演示项目中 数据注释:用于数据访问层和 Fluent API:用于映射和表关系

问题:DbContext未创建DB,存在运行时异常:

未映射类型“Domain.DataLayer.Member”。检查是否未使用Ignore方法或NotMappeAttribute数据批注明确排除该类型。验证该类型是否定义为类、是否为基元、嵌套或泛型,以及是否从EntityObject继承。 代码:我的解决方案包括: 1-类库(Domain.Classes项目):我在其中编写所有类

public class Member
{
    public int Id { get; set; }
    public string UserName { get; set; }
    public string Password { get; set; }
    public string FullName { get; set; }
   
}
2-DAL(Domain.DataLayer项目):也是另一个类库,我引用了Domain.classes

namespace Domain.DataLayer.Repositories
{
   [MetadataType(typeof(MemberMetadata))]
   public partial class Member : Classes.Member , IValidatableObject
   {
     public Member()
     {
        Tasks = new HashSet<Task>();
        History = new HashSet<Commint>();
     }
     public string ConfirmPassword { get; set; } 
     public HashSet<Task> Tasks { get; set; }
     public HashSet<Commint> History { get; set; }

     public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
     {
        var result = new List<ValidationResult>();
        if (!string.Equals(Password,ConfirmPassword))
        {
            result.Add(new ValidationResult("mismatch pwsd", new[] {"ConfirmPassword" }));
        }
        return result;
     }
  } 
}
namespace Domain.DataLayer.Repositories
{
[元数据类型(typeof(MemberMetadata))]
公共部分类成员:Classes.Member,IValidatableObject
{
公职人员()
{
Tasks=newhashset();
历史=新的HashSet();
}
公共字符串ConfirmPassword{get;set;}
公共哈希集任务{get;set;}
公共哈希集历史记录{get;set;}
公共IEnumerable验证(ValidationContext ValidationContext)
{
var result=新列表();
如果(!string.Equals(Password,ConfirmPassword))
{
Add(新的ValidationResult(“不匹配的pwsd”,新的[]{“ConfirmPassword”}));
}
返回结果;
}
} 
}
我使用了存储库模式:

public class MemberRepository : IRepository<Member>
{
    public Task<IQueryable<Member>> GetAllEntities()
    {
        return Task<IQueryable<Member>>.Factory.StartNew(() => new Context().Members.AsQueryable());
    }
}
公共类成员存储库:IRepository
{
公共任务getAllenties()
{
返回Task.Factory.StartNew(()=>newcontext().Members.AsQueryable());
}
}
3-BLL:为了简单起见:没有业务逻辑层

4-PL(域应用程序MVC项目):成员控制器:

    public async Task<ActionResult> Index()
    {
        var members = await _repository.GetAllEntities();
        return View(members);
    }
公共异步任务索引()
{
var members=await_repository.getAllenties();
返回视图(成员);
}
注意:我依赖DbContext来创建名为:Domain.DataLayer.Context的DB,但它没有创建DB,所以我创建了DB并通过上下文构造函数传递了connectionString,如下所示:

namespace Domain.DataLayer
{
  public class Context : DbContext
  {
    public Context(): base("InterviewDemo") // i tried also base("name=InterviewDemo")
    {
    }

    public DbSet<Member> Members { get; set; }
    public DbSet<Task> Tasks { get; set; }
    public DbSet<Commint> TaskHistory { get; set; }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new MemberConfig());
        modelBuilder.Configurations.Add(new TaskConfig());
        modelBuilder.Configurations.Add(new CommintConfig());
        base.OnModelCreating(modelBuilder);
    }
  }
}
namespace Domain.DataLayer
{
公共类上下文:DbContext
{
public Context():base(“InterviewDemo”)//我也尝试了base(“name=InterviewDemo”)
{
}
公共数据库集成员{get;set;}
公共数据库集任务{get;set;}
公共数据库集任务历史记录{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
添加(newmemberconfig());
modelBuilder.Configurations.Add(newtaskconfig());
modelBuilder.Configurations.Add(newcommintconfig());
基于模型创建(modelBuilder);
}
}
}