我创建了一个新的ASP.NET MVC-5应用程序,Individual User Accounts然后更新Nuget packages了解决方案中的所有内容.现在我试图遵循一些教程中显示的一些指导原则,但我遇到了一些问题.第一个是ApplicationRoleManager未创建在整个应用程序中使用的类(ApplicationUserManager已创建).第二个问题更多的是Entity-Framework:我已经看到,为了向用户和角色播种数据库,许多人在ApplicationDbContext类中创建了一个静态构造函数:
static ApplicationDbContext()
{
Database.SetInitializer<ApplicationDbContext>(new ApplicationDbInitializer());
}
Run Code Online (Sandbox Code Playgroud)
所以我添加了它,并且实现的ApplicationDbInitializer是:
public class ApplicationDbInitializer : DropCreateDatabaseIfModelChanges<ApplicationDbContext>
{
protected override void Seed(ApplicationDbContext context)
{
InitializeIdentityForEF(context);
base.Seed(context);
}
//Create User=Admin@Admin.com with password=Admin@123456 in the Admin role
public static void InitializeIdentityForEF(ApplicationDbContext db)
{
var userManager = HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();
var roleManager = HttpContext.Current.GetOwinContext().Get<ApplicationRoleManager>();
const string name = "admin@admin.com";
const string password = "Admin@123456";
const string roleName = "Admin"; …Run Code Online (Sandbox Code Playgroud) c# asp.net-mvc entity-framework asp.net-mvc-5 asp.net-identity-2
我正在 C# 8.0 中设计一个nullable启用的接口,目标是 .Net Standard 2.0(使用Nullable 包)和 2.1。我现在面临这个问题T?。
在我的示例中,我正在为缓存构建一个接口,该接口存储Stream由string键标识的 s/字节数据,即文件系统可以通过一个简单的实现。每个条目还由一个版本标识,该版本应该是通用的。例如,此版本可以是另一个string键(如 etag)、 anint或 a date。
public interface ICache<TVersionIdentifier> where TVersionIdentifier : notnull
{
// this method should return a nullable version of TVersionIdentifier, but this is not expressable due to
// "The issue with T?" https://devblogs.microsoft.com/dotnet/try-out-nullable-reference-types/
Task<TVersionIdentifier> GetVersionAsync(string file, CancellationToken cancellationToken = default);
// TVersionIdentifier should be not nullable here, which is what we …Run Code Online (Sandbox Code Playgroud) 我是Android开发的新手,想要在我的网络上使用thrift服务器的thrift客户端创建一个应用程序.我已经获得了thrift定义文件和thrift编译器生成的java代码.
我该如何开始?如何将thrift库添加到我的项目中?我是否需要自己编译,如果是,我应该如何实现这个与Android兼容?
我可以直接使用与此类似的自动生成的功能
public void getProduct(int productID, org.apache.thrift.async.AsyncMethodCallback resultHandler)
Run Code Online (Sandbox Code Playgroud)
对我的服务进行异步调用,以便我遵循android最佳实践?或者使用此功能以任何方式阻止我的应用程序或是否有另一种方式在Android上优先于此?
我使用当前版本的谷歌ADT(eclipse).我的应用程序需要在android 4+设备上运行(我将minSdkVersion设置为15).
我认为使用以下abstract class作为数据库迁移的基础:
using System.Threading.Tasks;
public abstract class MigrationBase
{
public abstract string Name { get; }
public abstract string Description { get; }
public abstract int FromVersion { get; }
public abstract int ToVersion { get; }
public abstract void Apply();
public abstract Task ApplyAsync();
}
Run Code Online (Sandbox Code Playgroud)
现在,根据底层数据库系统,将编写具体的迁移,实现void Apply或Task ApplyAsync方法可能更有意义.我看到以下选项:
MigrationBase,SyncMigrationBase并且AsyncMigrationBase使用类型转换处处似乎没有合理的给我.现在您可能会说我可以选择选项二,因为ADO.Net提供同步和异步方法,在大多数情况下,数据库适配器将提供两种变体.如果您在没有ADO.Net的情况下查看更一般的问题,是否有更好的解决方案?
如果我选择了第二选项,我是否应该提供Task ApplyAsync类似于微软所做的预先实现的版本,System.IO.Stream.ReadAsync同时考虑到Stephen Toub编写的内容?如果是的话,我还应该注意什么?