小编Dry*_*ods的帖子

Web.config和App.config的问题

介绍:

  • 通常我们在或中存储ConnectionStrings和一些其他设置(<appSettings> <add key...).Web.configApp.config

我的风景:

  • Web应用程序使用工厂模式直接注入读取数据提供者.

  • web.config我有密钥告诉我将使用哪个DLL(提供程序)来检索我的数据.

  • 我可以有多个提供程序(每个DLL将是MS SQL,MySQL的提供程序,或从某些SOA服务获取数据).

  • 每个DLL都有自己的名称(ID和名称空间),并且需要拥有自己的配置(dataconnections,service urls等...),第一个想法就是写入 app.config.

问题:

  • #1 - 网站正在运行(运行时)我需要更改数据提供者,我该怎么做?不知何故,写入的默认值Web.config将被更改.

    • 我的目标是能够拥有多个提供程序(并在运行时:添加/删除提供程序和更改配置) - 这引出了我的第二个问题:

    .

  • #2 - 每个数据提供者都有自定义配置,而App.Config文件不适用于dll程序集,只能用于可执行文件.这意味着我需要在我的Web.Config上编写(我不喜欢这个选项,因为我再次在运行时更新我的​​web.config).我该怎么解决这个问题?

    • 我试图避免编写自定义设置XML文件.我的理想的解决方案是以某种方式的部署DLLDLL.config每每个供应商.并且在运行时期间我可能需要更改此配置值.

.

asp.net app-config web-config

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

MVC 5.2.3 - 全球化 - 具有范围的DateTime和Decimal

简而言之,我使用MVC 5.2.3(包含所有更新的JS框架)开始了一个新项目,期望我从MVC 2获得的验证中遇到的许多问题都得到了解决,我有多么错误.

基本上我疯狂地试图提供验证DateTimeDecimal.
使用十进制字段,使用EN和DE(文化)中的浏览器,我遇到了逗号和点(十进制除法)以及我正在设置的范围的问题.

随着DateTime我甚至尝试了一个DisplayFormat只是显示日期而不是时间,无论如何,日/月/年的顺序与分离./-只是失败.

例子:

  • 在DE - 类型:999,999 - >结果:ERROR"Das Feld"D1 DE"muss zwischen 0 und 999,9999 liegen." - 应该被接受.
  • 在EN - 类型:999.999 - >结果:被接受,因为它应该是(正确的)

这同样适用于日期时间显示格式和类似的JS验证....

我和你们分享我现在拥有的东西:

的TestObject

public class TestObject
{       
    ....
    [Display(Name = "D2", ResourceType = typeof(WebApplication1.Models.Res.TestObject))]
    [Range(0, 999.9999)]
    public decimal? D1 { get; set; }
    // On DBContext I have defined the range/precision
    // modelBuilder.Entity<TestObject>().Property(x => x.D2).HasPrecision(7, 4);

    [Display(Name …
Run Code Online (Sandbox Code Playgroud)

c# globalization validation asp.net-mvc

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

"Microsoft.SqlServer.Types.dll"和"Microsoft.SqlServer.Types.dll"中都存在"Microsoft.SqlServer.Types.SqlGeography"类型

在我的Windows类库(由MVC网站使用)中,我安装了NugetPackage Microsoft.SqlServer.Types (Spatial).

现在,使用ado.net我试图通过执行以下操作来读取值:

protected SqlGeography MapSqlGeography(DbDataReader reader, string key)
{
      return reader[key] is DBNull ? null : (SqlGeography)reader[key];
}
Run Code Online (Sandbox Code Playgroud)

如果我在此行中添加制动点并在visual studio观察窗口中输入:"reader [key]",我可以看到正确的Point(XXXX,XXX)类型:" object {Microsoft.SqlServer.Types.SqlGeography}"

但是,一旦我尝试进行演员,我就会出现以下错误:

(SqlGeography)reader[key]   The type 'Microsoft.SqlServer.Types.SqlGeography' exists in both
 'Microsoft.SqlServer.Types.dll' and 
 'Microsoft.SqlServer.Types.dll'
Run Code Online (Sandbox Code Playgroud)

主要的奇怪事实是dll完全一样......

据我所知,这个命名空间/类名只有一个"源",它不应该重复....

我的"使用"是:

using Microsoft.SqlServer.Types;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Data.SqlClient;
using System.Threading.Tasks;
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题的任何想法?谢谢.

更新#1

我卸载了NugetPackage`Microsoft.SqlServer.Types(Spatial)',而是尝试了一个名为:'Microsoft.SqlServer.Types(Unofficial)',甚至在清理了所有以前的文件夹/文件并清理了"bin/obj"之后",我仍然有完全相同的例外......

我现在只是看到了这个原因......任何想法都会非常感激.

更新#2

刚试过用 extern alias destination;

return reader[key] is DBNull 
        ? null 
        : (destination.Microsoft.SqlServer.Types.SqlGeography)reader[key];
Run Code Online (Sandbox Code Playgroud)

有例外:

Cannot cast 'reader[key]' (which has an actual type of …
Run Code Online (Sandbox Code Playgroud)

c# sql-server

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

OpenPop - Gmail - GetMessageCount()返回0(零)

使用OpenPop连接到Gmail时,我只能检索一次电子邮件,即使我不删除它也是如此.使用GetMessageCount()我总是收到0封电子邮件.我怎样才能收到那里的所有电子邮件?

只有在阅读并处理它们之后,我才能下令删除.我使用以下代码来获取电子邮件:

using (var client = new Pop3Client())
{
    // Connect to the server
    client.Connect(serverData.Hostname, serverData.Port, serverData.UseSsl);

    // Authenticate ourselves towards the server
    client.Authenticate(serverData.Username, serverData.Password, AuthenticationMethod.UsernameAndPassword);

    var emailAmount = client.GetMessageSizes().Count;

    // Fetch all the current uids seen
    var msgCount = client.GetMessageCount();

   .....
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net openpop

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

SQL到Linq语句中的独立子查询(只有一次命中DB)

有类似的东西:

 SELECT (SELECT COUNT(*) from Table1),(SELECT COUNT(*) from Table2 )
Run Code Online (Sandbox Code Playgroud)

如何在linq中编写它?还是简单不可能?

限制:

  • 只能打一次数据库:

       var result = new {
                     Sum1 = db.Table1.Count(),
                     Sum2 = db.Table2.Count()
                    });  // is not valid.....
    
    Run Code Online (Sandbox Code Playgroud)
  • 我不想使用类似的东西(使用"帮助"表):

    var result = (from t3 in db.Table3
                 select new {
                     Sum1 = db.Table1.Count(),
                     Sum2 = db.Table2.Count()
                 }).firstOrDefault();
     //In order to get only the first row 
     //but it will not return nothing if the table 3 has no entries......
    
    Run Code Online (Sandbox Code Playgroud)
  • 不使用 db.Database.ExecuteSqlCommand

.net c# linq entity-framework ef-code-first

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

哪个接口一个类实现?

从代码中我们如何知道一个类实现哪些接口?

例:

interface IDrink
interface IEat

class Milk : IDrink    
class Water: IDrink    
class Potato: IEat
Run Code Online (Sandbox Code Playgroud)

我想知道Potato是否实现了IDrink.我该怎么做?

.

使用此:

我有一个接收一个" object myObject"的方法,我需要看看是否将它转换为IDrink或IEat.

c# asp.net

3
推荐指数
2
解决办法
252
查看次数

C# 作为带有泛型但不相关 &lt;T&gt; 的类型的运算符

我有一个带有泛型的抽象基类,我将针对这个问题简化它:

public abstract class DBBaseTable<T>
{
    public T Id { get; set; }     
    public byte[] RowVersion { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在,我可以有这样的课程:Person : DBBaseTable<int>Animal: DBBaseTable<Guid>

我试图避免反射,以便在我根本不知道T类型的代码的一部分中访问属性 RowVersion 。

var memberInfo = oldObject.GetType().BaseType;
if (memberInfo != null 
    && memberInfo.IsGenericType
    && memberInfo.GetGenericTypeDefinition() == typeof(DBBaseTable<>)
)
{   
    var isCorrectRowVersion = (oldObject as DBBaseTable<object>).RowVersion ==
                              (objToUpdate as DBBaseTable<object>).RowVersion;

    //TODO....  
}
Run Code Online (Sandbox Code Playgroud)

条件 IF 条件工作正常......但是当我尝试使用as运算符时,我总是需要指定T类型......我尝试使用“对象”但它不起作用......我根本不知道我是在处理 int、guid 还是其他类型的......

我知道如何通过反射解决这个问题,但我想知道是否有替代方案?

c# generics

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

从“随机”字节数组生成(并保存在磁盘中)图像

我正在构建一个信息块,最终将其转换为字节数组。我想知道是否可以将其转换为图像?

我知道它最终不会“显示任何东西”有意义,这将是一个更抽象的结果,而这正是我正在寻找的。

我已经尝试过以下代码,但它返回异常...:

    public Image byteArrayToImage(byte[] byteArrayIn)
    {
        MemoryStream ms = new MemoryStream(byteArrayIn);
        Image returnImage = Image.FromStream(ms);
        return returnImage;
    }
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

c# image

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

C# Linq GroupBy ==&gt; 类与匿名类 --- 不同的结果

我有以下代码:

var rawGroupBEFORE = sqlRaw.GroupBy(x => new
{
    x.ID,
    x.P1,
    x.P2,
    x.P3,
    x.P4,
    x.P5,
    x.P6,
    x.P7,
    x.P8,              
}).ToList();

var rawGroup = sqlRaw.GroupBy(x => new RawDocument
{
    Id = x.ID,
    P1 = x.P1,
    P2 = x.P2,
    P3 = x.P3,
    P4 = x.P4,
    P5 = x.P5,
    P6 = x.P6,
    P7 = x.P7,
    P8 = x.P8,              
}).ToList();
Run Code Online (Sandbox Code Playgroud)

结果是我在rawGroupBEFORE1 元素中拥有的数据。在rawGroup给我 2 个元素 ..... 错误的分组。我已经使用自动 Visual Studio“创建缺少的属性”操作创建了类 RawDocument。

任何想法为什么我应该得到这种行为?

c# linq

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

SQL Server - 重用以前的查询 - 与Linq类似的逻辑

我正在尝试编写以实现以下查询的逻辑:

select ......
from (select ..... from ... complex and long query #1) R1
     (select ..... from ... complex and long query #2) R2
Where
  NOT ( @DateStart > R2.IstEnde OR @DateEnd <= R2.IstStart)
OR 
(
    (select count(*) 
     from R2  // <---- BUG IS HERE
     Where R2.IsOutsideTaskTimeFrame = 1 AND R2.IsManuallyFixed = 1
    ) > 0
)
order BY R2.PersonName, R1.YearOfWeek, R1.Week 
Run Code Online (Sandbox Code Playgroud)

哪个显然不起作用,因为我试图在"count()"条件中"重用"R2.

我是根据".NET Linq"逻辑编写的,我们可以"重用"以前的查询.

我是否可以编写"重用"前一个查询而不再重复它的逻辑?

c# linq sql-server

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

如果list1中至少有一个元素在list2中?

有以下内容:

public List<int> List1 { get; set; }
...
var x = GiveMeObject(); // x.List2 --> each element on list2 has an Id (int).
...
bool containsAtLeastOne = ???
Run Code Online (Sandbox Code Playgroud)

什么是最简单/最快/最短的方式(在linq中)验证list1中是否至少有1个list1元素?

谢谢

.net c# linq list

0
推荐指数
2
解决办法
564
查看次数

初始化变量的简短版本

我想重构以下两行代码:

var myDbObject = service.GetObj(id);
name = myDbObject != null ? myDbObject.Name : "No name";
Run Code Online (Sandbox Code Playgroud)

如何避免使用辅助变量"myDbObject"?

我只用一行代码就可以做到这一点吗?

LINQ还有什么方法可以实现这个目的吗?

我不看的解决方案:

  • 使用返回Name而不是完整对象的服务;
  • 多次调用该服务.

c#

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