正如提到的这个帖子,我得到一个JSON序列化错误在序列化的实体框架代理:
序列化"System.Data.Entity.DynamicProxies.PurchaseOrder_446B939192F161CDBC740067F174F7A6059B0F9C0EEE68CD3EBBD63CF9AF5BD0"类型的对象时检测到循环引用.
但不同的是,我的实体中没有循环引用,它只发生在我们的生产环境中.本地一切都很好......
我的实体:
public interface IEntity
{
Guid UniqueId { get; }
int Id { get; }
}
public class Entity : IEntity
{
public int Id { get; set; }
public Guid UniqueId { get; set; }
}
public class PurchaseOrder : Entity
{
public string Username { get; set; }
public string Company { get; set; }
public string SupplierId { get; set; }
public string SupplierName { get; set; } …Run Code Online (Sandbox Code Playgroud) 以下解决方案适用于.net核心1.1,但在从1.1升级到2.0后,我收到以下错误:
InvalidOperationException:无法为"Role"创建DbSet,因为此类型未包含在上下文的模型中.
当用户尝试登录并执行以下语句时:
var result = await _signInManager.PasswordSignInAsync(model.Email,
model.Password, model.RememberMe, lockoutOnFailure: false);
Run Code Online (Sandbox Code Playgroud)
怎么了?
User.cs
public partial class User : IdentityUser<Guid>
{
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
IdentityEntities.cs
public partial class UserLogin : IdentityUserLogin<Guid>
{
}
public partial class UserRole : IdentityUserRole<Guid>
{
}
public partial class UserClaim : IdentityUserClaim<Guid>
{
}
public partial class Role : IdentityRole<Guid>
{
public Role() : base()
{
}
public Role(string roleName)
{
Name = roleName;
}
}
public partial class RoleClaim …Run Code Online (Sandbox Code Playgroud) 我正在使用EF Core 2设置一个新项目,我需要在IdentityUser上有一个导航属性,所以当我查询用户时,我可以包含(x => x.Roles)并获取用户所在的角色.
这篇关于Github的帖子有一些想法,但是我通过在Identity表上创建新的/重复的字段或导致迁移问题,尝试了每个问题和所有问题.EF团队的任何人都没有官方评论.
https://github.com/aspnet/Identity/issues/1361
我想知道是否有人这样正常工作?并且可以共享他们的EF DB映射和模型.
我是.NET的新手,试图获取所有注册用户的列表及其角色名称,并使用viewModel将它们发送到视图.
这是ViewModel:
public class ApplicationUserListViewModel
{
[Display(Name = "User Email Address")]
public string UserEmail { get; set; }
public List<IdentityUserRole<string>> Roles { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我尝试了这个以获取所有用户及其角色,并为每个用户创建一个ViewModel,并将所有视图模型放在一个列表中以传递给View:
var users = _userManager.Users.ToList();
var userList = users.Select(u =>
new ApplicationUserListViewModel {
UserEmail = u.Email,
Roles = u.Roles.ToList() }
).ToList();
Run Code Online (Sandbox Code Playgroud)
但是,当我明确地为每个用户分配角色时,这总是为每个用户提供0个角色.
我正在尝试使用以下方法自定义asp.net标识实体:
public class User : IdentityUser<string, UserClaim, UserRole, UserLogin>
public class UserClaim : IdentityUserClaim<string>
public class UserLogin : IdentityUserLogin<string>
public class UserRole : IdentityUserRole<string>
public class UserToken : IdentityUserToken<string>
public class Role : IdentityRole<string, UserRole, RoleClaim>
public class RoleClaim : IdentityRoleClaim<string>
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个DbContext类,如下所示
public class AppDbContext : IdentityDbContext<User, Role, string, UserClaim, UserRole, UserLogin, RoleClaim, UserToken>
Run Code Online (Sandbox Code Playgroud)
然后配置这些
services
.AddIdentity<User, Role>()
.AddEntityFrameworkStores<AppDbContext>()
.AddDefaultTokenProviders();
Run Code Online (Sandbox Code Playgroud)
但我也尝试过
.AddEntityFrameworkStores<AppDbContext, string>()
Run Code Online (Sandbox Code Playgroud)
我在互联网上阅读了很多博客文章,例如这样,但大多数博客都要针对密钥的数据类型进行更改,比如int或者Guid.在我的情况下,我没有更改默认键数据类型string.
我在所有这些情况下编译都没问题,但它在运行时抛出错误
System.TypeLoadException GenericArguments [0],'MyIdentity.Entities.User','Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore`8 [TUser,TRole,TContext,TKey,TUserClaim,TUserRole,TUserLogin,TUserToken]'违反约束类型参数'TUser'.
at System.RuntimeTypeHandle.Instantiate(RuntimeTypeHandle句柄,IntPtr*pInst,int numGenericArgs,ObjectHandleOnStack类型),位于System.RuntimeType.MakeGenericType(Type …