小编nom*_*mad的帖子

ASP.NET Core 2:缺少ApplicationInsights

我发布ASP.NET Core 2应用程序并看到以下错误.

Error:
  An assembly specified in the application dependencies manifest (MyApp.deps.json) was not found:
    package: 'Microsoft.ApplicationInsights.AspNetCore', version: '2.1.1'
    path: 'lib/netstandard1.6/Microsoft.ApplicationInsights.AspNetCore.dll'

  This assembly was expected to be in the local runtime store as the application was published using the following target manifest files:
    aspnetcore-store-2.0.0-linux-x64.xml;aspnetcore-store-2.0.0-osx-x64.xml;aspnetcore-store-2.0.0-win7-x64.xml;aspnetcore-store-2.0.0-win7-x86.xml
Run Code Online (Sandbox Code Playgroud)

我在Dev环境中没有看到这个错误.所以不确定出了什么问题.有想法该怎么解决这个吗?

更新

我安装了SDK(我只安装了运行时),一切都开始工作了.不确定这是否是最好的解决方案.

asp.net-core asp.net-core-2.0

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

DAL中的存储库与服务模式:EF和Dapper

我正在研究项目,我需要设计DAL.我将Entity Framework用于大部分项目和Dapper一些对性能敏感的领域.

我正在考虑使用Repository模式,但是EF在某种意义上已经实现了这种模式.但是Dapper的情况并非如此.然后我想知道在我的DAL中混合存储库和服务模式是否有效?或者这会进入业务逻辑层?

我想要建立一个样本结构:

MyProjectName.Main
    Views/
    Controllers/
    Infrastructure/
    ...
MyProjectName.DAL
    DataService.EF/
        fileName.cs
        ...
    DataService.Dapper/
        fileName.cs
        ...
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc design-patterns entity-framework dapper

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

ConfigurationManager读取错误的文件 - Web.config而不是App.config

我正在研究ASP.NET MVC项目,并决定将一些功能提取到一个单独的类库项目(在同一个解决方案中).

我有些感动的元素<appSettings></appSettings>Web.config主项目(我们称之为项目A),以App.config在类库项目(我们称之为项目B).我添加了对System.Configuration.dll的引用以访问项目B中的ConfigurationManager.

示例App.config文件用于项目B,如下所示.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Key1" value="Value1"/>
    <add key="Key2" value="Value2"/>
  </appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我按如下方式访问这些设置(在项目B中).

string key1 = ConfigurationManager.AppSettings["Key1"];
string key2 = ConfigurationManager.AppSettings["Key2"];
Run Code Online (Sandbox Code Playgroud)

我注意到了key1key2返回的值ConfigurationManagernull.

在调试时,我看到项目A中ConfigurationManager原始的拉取值Web.config(另一<appsettings></appsettings>部分是我没有移动到项目B的部分)!

这对我没有任何意义.有人能告诉我我做错了什么,所以我可以访问App.config中的设置吗?

谢谢.

asp.net-mvc configurationmanager

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

迭代DbSet <TEntity> vs IQueryable <out T>

使用实体框架我从表中选择一些数据并使用循环迭代它foreach.我想知道以下示例中何时查询数据?

例1.

var countries = db.WorldCountries;
foreach(var item in countries)
{
    Console.WriteLine("Country: {0}", item.Country);
}
Run Code Online (Sandbox Code Playgroud)

例2.

var countries = db.WorldCountries.Where(t => t.Country == "Country Name");
foreach(var item in countries)
{
    Console.WriteLine("Country: {0}", item.Country);
}
Run Code Online (Sandbox Code Playgroud)

在第一个例子中,countriesDbSet<WorldCountries>在第二个例子中,countriesIQueryable<out WorldCountries>.

如果没有.ToList()上面的示例,如何检索数据?是否在foreach循环开始时检索整个数据集(就像.ToList()在第一次迭代开始时调用的那样),或者在循环的每次迭代中向数据库发出查询.

谢谢.

entity-framework

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

显式接口实现,为什么显式转换

当一个类显式实现一个接口时,为什么需要将类实例显式地转换为接口才能使用已实现的方法?

(此示例取自此处:MSDN:显式接口实现)

您有两个接口,如下所示.

interface IControl
{
    void Paint();
}
interface ISurface
{
    void Paint();
}
Run Code Online (Sandbox Code Playgroud)

然后你明确地实现它们.

public class SampleClass : IControl, ISurface
{
    void IControl.Paint()
    {
        System.Console.WriteLine("IControl.Paint");
    }
    void ISurface.Paint()
    {
        System.Console.WriteLine("ISurface.Paint");
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,要使用接口,您需要以下代码.

// Call the Paint methods from Main.

SampleClass obj = new SampleClass();
//obj.Paint();  // Compiler error.

IControl c = (IControl)obj;
c.Paint();  // Calls IControl.Paint on SampleClass.

ISurface s = (ISurface)obj;
s.Paint(); // Calls ISurface.Paint on SampleClass. 
Run Code Online (Sandbox Code Playgroud)

在上面的代码块中,为什么你有

IControl c = (IControl)obj; …
Run Code Online (Sandbox Code Playgroud)

c#

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

Proxy <IEnumerable>类型中的方法'GetEnumerator'没有实现

使用AutoMapper时出现以下错误

程序集"AutoMapper.Proxies,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = be96cd2c38ef1005"中的"代理"类型中的方法"GetEnumerator"没有实现.

在我的存储库中,我有一个私有方法

private IMapper GetMapper()
{
    var config = new MapperConfiguration(cfg => {
        cfg.CreateMap<MyClass, PersistenceModels.MyClass>();
        cfg.CreateMap<IEnumerable<PersistenceModels.MyClass>, IEnumerable<MyClass>>();
    });

    return new Mapper(config);
}
Run Code Online (Sandbox Code Playgroud)

然后我用这个如下

var mapper = GetMapper();
var userInfo = mapper.Map<IEnumerable<PersistenceModels.MyClass>, IEnumerable<MyClass>>(userInfoRaw);
Run Code Online (Sandbox Code Playgroud)

MyClass类型是相同的,并且具有一个IEnumerable属性

public IEnumerable<string> ImageUris { get; set; }
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决这个问题?

编辑

我不是接口定义的映射类型,我是映射具体类型的集合,因此是IEnumerable接口.

automapper

6
推荐指数
2
解决办法
5401
查看次数

代码首先一对一启用级联删除

我与外键有一对一的关系,但由于Cascade Delete某种原因没有启用.示例代码如下.

public class AppRegistration
{
    public int AppRegistrationId { get; set; }
    [Required]
    [StringLength(50)]
    [Display(Name = "Username")]
    public string UserName { get; set; }
    [Required]
    [StringLength(100)]
    public string Password { get; set; }
    [StringLength(20)]
    public string StudentOrAgent { get; set; }
    // navigation properties
    public virtual AppStatus AppStatus { get; set; }
    public virtual Agreement Agreement { get; set; }
    public virtual AnotherTable AnotherTable { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

具有外键的从属表如下.

public class Agreement
{
    [Key]
    [ForeignKey("AppRegistration")]
    public …
Run Code Online (Sandbox Code Playgroud)

entity-framework ef-code-first

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

.Where(<condition>).FirstOrDefault()vs .FirstOrDefault(<condition>)

使用Linq to Entities以下是否有区别?

db.EntityName.Where(a => a.Id == id).FirstOrDefault();

db.EntityName.FirstOrDefault(a => a.Id == id);
Run Code Online (Sandbox Code Playgroud)

或者仅仅是个人偏好的问题?

谢谢.

linq-to-entities

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

Dapper:无法解析浮点数(解析列时出错)

我正在使用Dapper从StoredProcedure检索SQL Server中的数据,我收到错误

Specified cast is not valid.

和细节:

Error parsing column 4 (SubTotal=0.00 - Decimal)

在SQL Server端,列SubTotaldecimal(18, 2) NULLABLE在.NET端,而在.NET端decimal?.正在检索的数据是0.00.

我检查了这个答案:Dapper,十进制加倍?解析列X时出错

根据答案,我换了

il.Emit(OpCodes.Ldtoken, unboxType);

il.Emit(OpCodes.Ldtoken, Nullable.GetUnderlyingType(unboxType) ?? unboxType);

在2360行仍然得到相同的错误.

任何人对此都有任何想法?谢谢.

更新:

我试过让列不可为空.还尝试将列更改为float(在SQL Server上)和double(在.NET端).这些都没有奏效,我得到了同样的错误.然后我将列更改为int现在代码工作正常.但是,我正在使用货币值,并希望使用浮点数.将进一步调查......

我正在执行如下存储过程

var transaction = this.db.Query<PaymentTransactions>("usp_PaymentTransactionsGetSingleIfPaid", new { registrationId }, commandType: CommandType.StoredProcedure);

返回信息的存储过程的相关部分如下所示.

SELECT * FROM PaymentTransactions WHERE RegistrationId = @registrationId AND TransactionStatus = 'SUCCESS';

更新2:

Dapper工作正常.也许我的开发环境出了问题.所需要的只是VS重启.

sql-server asp.net-mvc dapper

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

asp.net核心标识-ID列为nvarchar(450)-为什么?

dbo.AspNetUsersASP.NET Core Identity使用的表中,该Id列的定义如下nvarchar(450)图所示。

因为Guids存储在此列中,这是什么原因?如果我要创建一个引用此Id列的外键,我真的不想使列不必要地变大。还是有一种情况Id需要使用此大小的列?

ASP.NET Core身份用户表

asp.net-core-identity asp.net-core-2.0

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