ASP MVC5身份用户抽象

时间:2016-01-18 19:41:32

标签: c# asp.net entity-framework architecture asp.net-identity

我想使用默认的Identity 2提供程序构建N-tire Web应用程序。因此,我的数据层包含带有模型定义的纯c#类,没有任何externad依赖。但是,如果不添加AspNet.Identity引用,就无法将某些类链接到我的应用程序用户。

我试图创建User类的接口:

- name: Create cron jobs to send emails                                       
  cron:                                                                                        
    name="Send emails"                                                          
    state=present                                                                              
    special_time=daily                                                                         
    job="/home/testuser/deployments/{{ item }}/artisan --env={{
item }} send:healthemail"                                                                 
  with_items:
      - london 
      - toronto
      - vancouver    

在Infrastructure层中将其替换为实现:

public interface ISystemUser
{
    string Id { get; set; }
    string Title { get; set; }
}

public class Place
{
    public int Id { get; set; }
    public string Address { get; set; }

    public ISystemUser User { get; set; }
}

但实体框架不会在实体之间建立关系。

是否有任何'权利'如何实现这个或者添加引用是必要的吗?

1 个答案:

答案 0 :(得分:1)

有一种解决方法,在我看来非常难看但有效。

您需要2个课程,一个用于User,另一个用于ApplicationUserApplicationUser必须具有User的所有属性。像这样:

//Domain Layer
public class User
{
     public string Id { get; set; } 
     public string Title { get; set; }
}

//Infrastructure Layer
public class ApplicationUser
{
     public string Title { get; set; }
}

现在,诀窍是将User类映射到ApplicationUser类的同一个表。像这样:

public class UserConfig : EntityTypeConfiguration<User>
{
    public UserConfig()
    {
        HasKey(u => u.Id);

        ToTable("AspNetUsers");
    }
}

希望它有所帮助!