小编JD *_*vis的帖子

System.Data.SqlClient.SqlException:无效的列名称'phone_types_phone_type_id'

我正在尝试从我的一些模型中获取与我的主要员工模型具有外键关系的信息.如果我单独绘制每个模型,我可以正常访问它们而没有任何问题,但我必须访问多个不同的网页才能这样做.

我正在尝试将我的几个模型合并到一个单独的控制器中,并以这种方式使用它们.不幸的是,当我尝试访问这些模型时,我收到一个奇怪的错误:

System.Data.SqlClient.SqlException:无效的列名称'phone_types_phone_type_id'.

搜索完代码后,显然唯一的位置phone_types_phone_type_id出现在我的迁移代码中.我总体上对C#和Asp.Net非常陌生,所以任何帮助都会受到赞赏.

这是我的模型的代码:

[Table("employee.employees")]
public partial class employees1
{
    public employees1()
    {
        employee_email_manager = new List<email_manager>();
        employee_employment_history = new HashSet<employment_history>();
        employee_job_manager = new HashSet<job_manager>();
        employee_phone_manager = new HashSet<phone_manager>();
        this.salaries = new HashSet<salary>();
    }

    [Key]
    public int employee_id { get; set; }
    [Display(Name="Employee ID")]
    public int? assigned_id { get; set; }

    [Display(Name="Web User ID")]
    public int? all_id { get; set; }

    [Required]
    [StringLength(50)]
    [Display(Name="First Name")]
    public string first_name { get; set; }

    [StringLength(50)]
    [Display(Name="Last Name")]
    public string …
Run Code Online (Sandbox Code Playgroud)

c# sql asp.net asp.net-mvc entity-framework

13
推荐指数
3
解决办法
5万
查看次数

使用授权属性的MVC动态页面权限?

我正在为我公司的网站设置用户权限,并且我们必须创建几个不同的角色和权限.我发现了一些关于创建实际角色和组的精彩信息,以及如何从这里实现它们.但是,这仍然需要将角色硬编码到authorize标签中,有没有办法动态填充授权标签,这样我就可以在网站上有一个页面,我可以快速为不同的页面分配不同的权限,不得不回到代码并修改我创建的每个页面的权限集?

asp.net permissions asp.net-mvc

11
推荐指数
1
解决办法
1万
查看次数

MassTransit Consumer 为注册消费者引发“未找到消息类型 {type} 的约定”异常

我有一个简单的服务,可以接受 HTTP 端点的请求。端点的操作使用 MassTransit 发布事件,提醒消费者实体已更新。然后,已发布事件的使用者向我的同步使用者发送同步请求以完成工作单元。

但是,当事件使用者尝试分派请求时,MassTransit 会抛出异常,并提示A convention for the message type {type} was not found。这似乎意味着我的消费者尚未注册,但我相信是这样。

这是我的Startup注册码:

public void ConfigureServices(IServiceCollection services)
{
    // -- removed non MassTransit code
    services.AddMassTransit(x =>
    {
        x.SetKebabCaseEndpointNameFormatter();
        x.AddConsumers(typeof(Startup).Assembly);
        x.UsingRabbitMq((context, cfg) =>
        {
            var rabbitMq = Configuration.GetSection("RabbitMq");
            var url = rabbitMq.GetValue<string>("Url");
            var username = rabbitMq.GetValue<string>("Username");
            var password = rabbitMq.GetValue<string>("Password");
            
            cfg.Host(url, h =>
            {
                h.Username(username);
                h.Password(password);
            });
            cfg.ConfigureEndpoints(context);
        });
    });
    services.AddMassTransitHostedService();
}
Run Code Online (Sandbox Code Playgroud)

我的 API 控制器如下所示:

[Route("~/api/[controller]")]
public class JobSchedulingController : ApiControllerBase
{
    private …
Run Code Online (Sandbox Code Playgroud)

c# masstransit rabbitmq asp.net-core

6
推荐指数
1
解决办法
9705
查看次数

合并多个 IAsyncEnumerable 流

随着Mediatr 10的发布,现在出现了一种范例,允许开发人员创建由IAsyncEnumerable. 我利用这种范例创建多个不同的文件系统观察程序来监视多个文件夹。为了监视文件夹,我利用了两种不同的方法:轮询和FileSystemWatcher. 作为我的管道的一部分,所有不同的文件夹监视器都聚合到一个IEnumerable<IAsyncEnumerable<FileRecord>. 在每种类型的观察程序中,都有一个内部循环运行,直到通过CancellationToken.

这是投票观察者:

public class PolledFileStreamHandler : 
    IStreamRequestHandler<PolledFileStream, FileRecord>
{
    private readonly ISeenFileStore _seenFileStore;
    private readonly IPublisher _publisher;
    private readonly ILogger<PolledFileStreamHandler> _logger;

    public PolledFileStreamHandler(
        ISeenFileStore seenFileStore, 
        IPublisher publisher, 
        ILogger<PolledFileStreamHandler> logger)
    {
        _seenFileStore = seenFileStore;
        _publisher = publisher;
        _logger = logger;
    }

    public async IAsyncEnumerable<FileRecord> Handle(
        PolledFileStream request, 
        [EnumeratorCancellation] CancellationToken cancellationToken)
    {
        var queue = new ConcurrentQueue<FileRecord>();
        while (!cancellationToken.IsCancellationRequested)
        {
            var files = Directory.EnumerateFiles(request.Folder)
                .Where(f => !_seenFileStore.Contains(f));

            await Parallel.ForEachAsync(files, …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous async-await iasyncenumerable ix.net

6
推荐指数
1
解决办法
4310
查看次数

同时执行所有任务并等待完成?

我有一系列异步方法,我想同时执行.对于它们是否成功执行,这些方法中的每一个都返回true或false.他们的结果也记录在我们的审计跟踪中,以便我们可以诊断问题.

我的一些功能并不依赖于所有这些成功执行的方法,我们完全期望它们中的一些会不时失败.如果它们确实失败了,程序将继续执行,它只会提醒我们的支持人员他们需要纠正问题.

我试图弄清楚所有这些函数同时执行的最佳方法是什么,但是只有在它们全部开始执行之后才让父函数等待它们.False如果任何函数失败,则父函数将返回,这将提示我的应用程序停止执行.

我的想法是做类似的事情:

public async Task<bool> SetupAccessControl(int objectTypeId, int objectId, int? organizationId)
{
    using (var context = new SupportContext(CustomerId))
    {
        if (organizationId == null)
        {
            var defaultOrganization = context.Organizations.FirstOrDefault(n => n.Default);
            if (defaultOrganization != null)  organizationId = defaultOrganization.Id;
        }
    }

    var acLink = AcLinkObjectToOrganiation(organizationId??0,objectTypeId,objectId);

    var eAdmin = GrantRoleAccessToObject("eAdmin", objectTypeId, objectId);
    var defaultRole = GrantRoleAccessToObject("Default", objectTypeId, objectId);

    await acLink;
    await eAdmin;
    await defaultRole;

    var userAccess = (objectTypeId != (int)ObjectType.User) || await SetupUserAccessControl(objectId);

    return acLink.Result && eAdmin.Result && defaultRole.Result …
Run Code Online (Sandbox Code Playgroud)

.net c# asynchronous task-parallel-library async-await

5
推荐指数
1
解决办法
1419
查看次数

MVVM Light 调用属性上的异步方法已更改?

所以我做了很多挖掘,但在任何地方都找不到任何真正明确的答案。

我正在使用 MVVM Light 和 WPF 编写一个应用程序。我有一个服务注入到我的 ViewModel 中,用于检查所设置的某个属性的有效性。该服务进行网络调用,并且是异步的。该调用不需要停止应用程序的执行,它只是向用户提供有关输入值有效性的视觉反馈。

因此,我设法将一些东西组合在一起以使其正常工作,但感觉有点hackey。

在属性更改时执行异步方法而不诉诸类似方法的正确方法是什么async void

这是我目前所拥有的。

    public string OmmaLicenseNumber
    {
        get => _ommaLicenseNumber;
        set
        {
            Set(() => OmmaLicenseNumber, ref _ommaLicenseNumber, value);
            Patient.OmmaLicenseNumber = value;

            var _ = CheckLicenseValid();
        }
    }

    private async Task CheckLicenseValid()
    {
        var valid = await _licenseValidationService.IsValidAsync(OmmaLicenseNumber);

        // We don't want the UI piece showing up prematurely. Need 2 properties for this;
        LicenseValid = valid;
        LicenseInvalid = !valid;
    }
Run Code Online (Sandbox Code Playgroud)

如果我只是尝试调用.Result异步方法,则会导致死锁,需要重新启动应用程序才能修复。虽然我所拥有的东西有效,但我并不是真正的粉丝。我还有哪些其他选择?

c# wpf mvvm mvvm-light async-await

5
推荐指数
1
解决办法
1427
查看次数

在实现具有默认方法实现的接口的类上使用“GetMethod”返回 null

我有几个接口(IMapFromIMapTo),可以让我简化AutoMapper配置。每个接口都有MapToMapFrom方法的默认实现。我有一个单独的MappingProfile类,它使用反射来查找所有实现类,并调用它们的映射创建。

上述类看起来像这样:

public interface IMapFrom<T>
{
    void MapFrom(Profile profile) => profile.CreateMap(typeof(T), GetType());
}

public interface IMapTo<T>
{
    void MapTo(Profile profile) => profile.CreateMap(GetType(), typeof(T));
}

public class MappingProfile : Profile
{
    public MappingProfile()
    {
        ApplyMappingsFromAssembly(Assembly.GetExecutingAssembly());
    }

    private void ApplyMappingsFromAssembly(Assembly assembly)
    {
        var types = assembly.GetExportedTypes()
            .Where(t => t.GetInterfaces().Any(i =>
                i.IsGenericType && (i.GetGenericTypeDefinition() == typeof(IMapFrom<>) || 
                                    i.GetGenericTypeDefinition() == typeof(IMapTo<>))))
            .ToList();

        foreach (var type in types)
        {
            var instance = Activator.CreateInstance(type); …
Run Code Online (Sandbox Code Playgroud)

c# reflection system.reflection c#-8.0 default-interface-member

5
推荐指数
1
解决办法
906
查看次数

将 EF Core 迁移添加到现有数据库,同时仍支持从头开始创建数据库

去年,我使用 .Net Core 和 EF Core 重写了一个遗留应用程序,但由于其他限制因素,当时选择不添加迁移。终于到了新应用程序可以作为模式更改的“单一事实来源”运行的时候了,但我对前进的最佳方式有点茫然。

我的最终目标是进行迁移,使整个现有数据库从无到有(减去非查找表中包含的数据)。不幸的是,到目前为止我想出的最可行的解决方案是针对新的空白数据库构建迁移。然后,一旦创建了与当前数据库状态匹配的初始迁移,我就可以将__EFMigrationsHistory新创建​​的数据库复制到旧数据库。

或者,我可以构建一个空白的初始迁移,并且可以尝试在该迁移中添加逻辑,以便从 SQL 文件创建数据库(如果数据库不存在)。


这两种解决方案似乎都特别“好”。除了诸如 之类的工具之外FluentMigrator,是否有任何以 EF Core 为中心的方法可以简化为需要重新创建测试的现有数据库创建迁移的过程?

.net c# entity-framework .net-core entity-framework-migrations

5
推荐指数
1
解决办法
2578
查看次数

填充 ViewModel 的正确方法?

我正在开发一个网络应用程序来工作,并且我正在使用标准 CRUD 风格的交互。但是,我不希望用户更新某些字段,因此我将它们从视图中删除了。但是,如果我没有显式设置这些字段,那么当模型在数据库中更新时它们会被清除。

我关心填充 ViewModel 字段的正确方法是什么。

我想出的粗略想法是这样的:

我的视图模型:

public class EditSoftwareTrackingViewModel 
{
    public EditSoftwareTrackingViewModel(SoftwareTracking model)
    {
        Id = model.Id;
        SoftwareId = model.SoftwareId;
        ComputerId = model.ComputerId;
        SoftwareActionId = model.SoftwareActionId;
        LastModified = model.LastModified;
        Computer = model.Computer;
        Software = model.Software;
        SoftwareAction = model.SoftwareAction;
    }
    public int Id { get; set; }
    [DisplayName("Software")]
    public int SoftwareId { get; set; }
    [DisplayName("Computer")]
    public int ComputerId { get; set; }
    [DisplayName("Software Action")]
    public int SoftwareActionId { get; set; }
    [DisplayName("Last Modified")]
    public DateTime? LastModified { get; …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc entity-framework viewmodel asp.net-mvc-5

4
推荐指数
1
解决办法
2713
查看次数

为第三方JQuery插件生成Typescript类型?

我试图为我找到的第三方JQuery UI元素编写一个D.TS文件.但是,我似乎无法绕过它.

在查看其他定义文件之后,它们似乎都适用于类似于独立库的项目,但不是每个插件的插件.

我正在使用的插件可以在这里找到.但我还没有找到它的任何打字.有没有人使用类似的东西?

typescript

3
推荐指数
1
解决办法
1538
查看次数

每天选择最接近凌晨 4 点的 1 行?

我们目前正在对返回一系列数据的报告进行查询。客户已指定他们希望总共接收 5 行,其中包含前 5 天的数据(由开始日期和结束日期变量定义)。对于每一天,他们都需要最接近凌晨 4 点的行中的数据。

我设法让它工作了一天,但我当然不想联合 5 个单独的 select 语句只是为了获取这些值。有没有办法通过 CTE 来实现这一点?

select top 1 
    'W' as [RecordType]
,   [WellIdentifier]                    as [ProductionPtID]
,   t.Name                              as [Device Name]
,   t.RecordDate --convert(varchar, t.RecordDate, 112) as [RecordDate]
,   TubingPressure                      as [Tubing Pressure]
,   CasingPressure                      as [Casing Pressure]
from #tTempData t
Where cast (t.recorddate as time) = '04:00:00.000'
or datediff (hh,'04:00:00.000',cast (t.recorddate as time)) < -1.2
order by Name, RecordDate desc 
Run Code Online (Sandbox Code Playgroud)

sql sql-server common-table-expression

1
推荐指数
1
解决办法
138
查看次数

何时使用Enum vs Struct

在我们的数据库中,有一个名为ObjectType的表。该表仅包含一系列具有Id和andObjectName的行。在我们的后端代码中,我们以不同的方式处理不同的对象,因此通常需要引用对象的ID进行比较。这些ID始终相同,并且始终映射到同一对象。

如果我的方法期望将整数值传递给它们,那么哪种构造会更好地处理这些对象?

什么时候使用结构体?我什么时候使用枚举?

c#

0
推荐指数
1
解决办法
3528
查看次数

只处理初始化对象?

我有一个API包装器,它具有一系列在首次使用时初始化的属性.Disposed调用类的方法时,它会处理它存储的所有其他类.但是,很有可能只有其中一个或两个类已初始化.如果这些类尚未初始化,则该Dispose方法实际上最终会初始化它们并将它们处理掉.这是一个庞大的资源和时间密集型,但我想不出一种方法来弥补它.

这是班级.

public class SalesForceApi : ISalesForce, IDisposable
{
    public Logger Logger = LogManager.GetCurrentClassLogger();

    private IAccounts _accounts;
    private IAttachments _attachments;
    private ICases _cases;
    private IContacts _contacts;
    private IGroups _groups;
    private IRecordTypes _recordTypes;
    private IUsers _users;

    public IAccounts Accounts => _accounts ?? (_accounts = new Accounts());

    public IAttachments Attachments => _attachments ?? (_attachments = new Attachments());
    public ICases Cases => _cases ?? (_cases = new Cases());
    public IContacts Contacts => _contacts ?? (_contacts = new Contacts());
    public …
Run Code Online (Sandbox Code Playgroud)

.net c# dispose

0
推荐指数
1
解决办法
392
查看次数