我创建了一个 Azure Active Directory 应用程序并应用了以下教程中的代码来启用登录:https : //azure.microsoft.com/en-us/resources/samples/active-directory-dotnet-webapp-openidconnect-aspnetcore/
登录后,以下返回我的电子邮件地址:
Console.WriteLine(User.Identity.Name)
Run Code Online (Sandbox Code Playgroud)
我将如何检索该用户的名字和姓氏?
我有以下控制器类;
public class MyController: Controller
{
private IValueService _service;
public MyController(IValueService service)
{
this._service = service;
}
public void MyMethod()
{
var values = _service.GetAll();
}
}
Run Code Online (Sandbox Code Playgroud)
我想创建这个类的实例并调用方法MyMethod(),例如
var MyCopy = new MyController();
MyCopy.MyMethod();
Run Code Online (Sandbox Code Playgroud)
但是,我收到消息,我需要提供所需的服务参数.我如何创建一个具有服务(存储库)的控制器实例,以便我可以调用其方法?
我使用以下BIML脚本基于源数据库创建每个表的列列表.我还添加了列dwh_timestamp.我使用此脚本创建目标表,添加元数据列.
<Columns>
<# foreach (var column in table.Columns) { #>
<#=column.GetBiml()#>
<# } #>
<Column Name="dwh_timestamp" DataType="DateTime" IsNullable="true"/>
</Columns>
Run Code Online (Sandbox Code Playgroud)
我使用以下代码创建将从源导入数据的SSIS包.
<DirectInput>SELECT <#=table.GetColumnList()#> FROM <#=table.GetTag("SourceSchemaQualifiedName")#></DirectInput>
Run Code Online (Sandbox Code Playgroud)
但是,由于源表不包含dwh_timestamp列,因此会导致错误.
我如何过滤table.GetColumnList()所以它跳过带有"dwh_"前缀的列?
我当前的项目有两个数据库连接:
第一个用于IdentityModel并使用本地.mdf文件.第二个我在外部SQL Server上创建,并首先使用数据库导入.
现在我想在外部sql服务器上创建IdentityModel表,因此只使用一个连接/数据库.我更改了ApplicationDbContext以匹配web.config中的外部连接名称.
ApplicationDbContext
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("SAMPLEEntities", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
Run Code Online (Sandbox Code Playgroud)
Web.config文件
<add name="SAMPLEEntities" connectionString="metadata=res://*/Models.modelone.csdl|res://*/Models.modelone.ssdl|res://*/Models.modelone.msl;provider=System.Data.SqlClient;provider connection string="data source=thedatabase;initial catalog=SAMPLE;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)
现在我认为会生成表格,但事实并非如此.当我尝试在软件包管理器控制台中进行手动更新时,我收到以下错误:
不支持从使用Database First或Model First创建的DbContext创建DbModelBuilder或编写EDMX.EDMX只能从不使用现有DbCompiledModel创建的Code First DbContext中获取.
我还尝试将本地.mdf文件导入到sql server中,这样我就可以复制表了,但是mdf文件是由VS 2015创建的,不会在SQL Server 2012中加载.
有关如何在外部SQL Server中生成/添加表的任何建议?
sql-server asp.net asp.net-mvc entity-framework asp.net-identity
我有一个自定义的 FleuntValidation 验证规则,用于检查 Guid 是否有效;
public static class GuidValidator
{
private static Regex isGuid = new Regex(@"^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$", RegexOptions.Compiled);
public static bool IsGuid(string candidate)
{
if (candidate != null)
{
if (isGuid.IsMatch(candidate))
{
return true;
}
}
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我想用它来检查 Guid 属性是否有效,然后返回自定义错误消息。
RuleFor(x => x.ShiftId).Must(guid => GuidValidator.IsGuid(guid.ToString())).WithMessage("StopShift.ShiftId.GuidNotValid()");
Run Code Online (Sandbox Code Playgroud)
但是,我的规则没有受到影响,因为我猜 Guid 无效,并且一些内置检查在它之前运行。我如何禁用内置检查以便达到我的自定义规则?