小编gar*_*daz的帖子

将Moq与实体框架6结合使用 - 模拟包含和位置

我正在尝试dbContext使用Moq并使用EntityFramework.Testing.Moq扩展方法创建一些内存中的模拟:

https://github.com/scott-xu/EntityFramework.Testing

当我尝试使用模拟上下文对我急切加载的查询进行单元测试时,我正在打砖墙.问题是,根本没有选择任何东西.我知道应该选择一些东西,因为当我使用LINQPad将相同的查询指向我的源数据库时,我得到了我期望的2个结果.

我不知道我需要发布多少代码等,所以希望以下内容有所帮助.

数据图

我有两个主表,dbo.Applicant基本上保存用户详细信息dbo.Application,并保存作业应用程序,有dbo.Application挂钩的查找表:

图

示例模型

这是基于上图的代码优先方法.我删除了属性以保持代码清洁,并且问题的重点是:

[Table("Application")]
public partial class Application
{
    [Min(1)]
    public int Id { get; set; }

    [Required]
    [StringLength(50)]
    public string ApplicationId { get; set; }

    [Min(1)]
    public int ApplicantId { get; set; }

    public virtual Applicant Applicant { get; set; }     
}

[Table("Applicant")]
public partial class Applicant
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public Applicant()
    {
        Applications = new HashSet<Application>();
        RowStatus = "L"; …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing entity-framework moq entity-framework-6

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

实体框架 - 反向工程师代码优先 - 覆盖变更

我正在使用EF Power Tools对现有数据库进行逆向工程.这可以.在EDMX Database-1st Route下,我将为Data Annotations等任何覆盖创建部分类,例如,LedgerPeriod是原始的EntityObject:

[MetadataType(typeof(LedgerPeriodMetaData))]
public partial class LedgerPeriod
{
    public class LedgerPeriodMetaData
    {

        [Required(ErrorMessage = "Period Start Date Required")]
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
        [DataType(DataType.Date)]
        public object PeriodDateFrom { get; set; }

        [Required(ErrorMessage = "Period End Date Required")]
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
        [DataType(DataType.Date)]
        public object PeriodDateTo { get; set; }

    }
}
Run Code Online (Sandbox Code Playgroud)

这可以.现在我对Code First Reverse Engineer使用相同的方法,还是有任何自定义设置,如果你必须多次运行电动工具,因为我向数据库添加了一个新表,它不会覆盖对数据库的任何更改以前创建的现有模型.

这最终意味着我可以自己更改实际的模型类,而不是创建部分类.

可以在此处找到EF Powertools的参考:

http://blogs.msdn.com/b/adonet/archive/2012/04/09/ef-power-tools-beta-2-available.aspx

asp.net-mvc entity-framework ef-code-first

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

设计模式 - 服务层

我目前正在阅读很多关于设计模式的内容,我一直在看他们图书馆里的各种Pluralsight视频.到目前为止,我已经学到了以下内容:

  1. 存储库模式
  2. 工作单位模式
  3. 抽象工厂模式
  4. 阅读令人敬畏的"DI in .NET"一书

现在我阅读了许多有关服务服务层的内容,并希望获得一些关于阅读和了解这些内容的最佳位置的建议.我认为这适合领域驱动设计,我应该从那里开始?"服务"这个术语似乎在IT中被广泛使用,它可能会混淆确切的含义.

所以我的问题是:

  1. 什么是服务层
  2. 了解它们的最佳地点在哪里

design-patterns service-layer

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

获取和发布ASP.NET Blazor

借助互联网上的一些示例,我可以开发ASP.NET Core Hosted Blazor应用程序.

但是,虽然呼吁api如下

 private async Task Refresh()
{
    li.Clear();
    li = await Http.GetJsonAsync<SampleModel[]>("/api/Sample/GetList");
    StateHasChanged();
}

private async Task Save()
{  
   await Http.SendJsonAsync(HttpMethod.Post, "api/Sample/Add", obj);     
   await Refresh();
}
Run Code Online (Sandbox Code Playgroud)

在下面的行中:

await Http.SendJsonAsync(HttpMethod.Post, "api/Sample/Add", obj);     
Run Code Online (Sandbox Code Playgroud)

如何查看此HTTP呼叫的状态代码?

如果API调用中出现任何问题而不是我想显示消息.

但当我这样做时:

 HttpResponseMessage resp = await Http.SendJsonAsync(HttpMethod.Post, "api/Sample/Add", obj);
Run Code Online (Sandbox Code Playgroud)

然后它说:

无法将HttpResponse消息转换为消息

我使用以下方法:

GetJsonAsync() // For HttpGet
SendJsonAsync() // For HttpPost And Put
DeleteAsync() // For HttpDelete  
Run Code Online (Sandbox Code Playgroud)

如何在此验证状态代码?

c# asp.net-core-webapi blazor asp.net-core-2.1 blazor-server-side

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

更新继承的方法C#

这里很新人,开始深入了解C#.

我想知道你是否可以"更新"一个继承的方法.在我的例子中,"Mage"类继承自"Hero".两者都有一个"Shout"方法,但Mage的喊叫应该在屏幕上添加一行文字,但我只得到Hero的一个.

我不想覆盖Hero的Shout,但是"更新它",所以Hero的孩子们可以喊出别的东西.我期待新的让我在使用它的同时修改旧方法,但没有运气.我错过了什么?

public class Hero
{
    protected string _name;

    public string Name
    {
        get { return _name; }
        set { _name = value; }
    }

    public Hero(string n)
    {
        Name = n;
    }

    public virtual void Shout()
    {
        Console.WriteLine("I am {0} and I am a hero! ", Name);
    }
}

public class Mage : Hero
{
    public Mage(string n) : base(n)
    {
        Name = n;
    }

    public new void Shout()
    {
        base.Shout();
        // Next line does not print...
        Console.WriteLine("Also, …
Run Code Online (Sandbox Code Playgroud)

c# inheritance

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