我的实体"Progetto"映射名为VW_AMY_PRG_WCS_Lookup的视图
Progetto拥有五个导航属性:ClienteDiFatturazione,ClienteDiLavorazione,PercentualeSuccesso,Agente具有多重性0..1和DocumentiWcs具有mupltiplicity*
当我在LINQPad中运行这个简单的语句时
var prj = Progetti.AsQueryable();
prj.ToList();
Run Code Online (Sandbox Code Playgroud)
生成的sql是
SELECT
[Extent1].[IdProgetto] AS [IdProgetto],
[Extent1].[IdSerie_Progetto] AS [IdSerie_Progetto],
[Extent1].[Importo] AS [Importo],
[Extent1].[Data_Prevista_Chiusura] AS [Data_Prevista_Chiusura],
[Extent1].[IdStato] AS [IdStato],
[Extent1].[Oggetto] AS [Oggetto],
[Extent1].[IdMezzo_Pervenuto] AS [IdMezzo_Pervenuto],
[Extent1].[IdAgente] AS [IdAgente],
[Extent1].[Fido_Residuo] AS [Fido_Residuo],
[Extent2].[IdAnagrafica_Fatturazione] AS [IdAnagrafica_Fatturazione],
[Extent3].[IdAnagrafica_Lavorazione] AS [IdAnagrafica_Lavorazione],
[Extent4].[IdPercentuale_Successo] AS [IdPercentuale_Successo]
FROM (SELECT
[VW_AMY_PRG_WCS_Lookup].[IdProgetto] AS [IdProgetto],
[VW_AMY_PRG_WCS_Lookup].[IdSerie_Progetto] AS [IdSerie_Progetto],
[VW_AMY_PRG_WCS_Lookup].[Importo] AS [Importo],
[VW_AMY_PRG_WCS_Lookup].[IdPercentuale_Successo] AS [IdPercentuale_Successo],
[VW_AMY_PRG_WCS_Lookup].[Data_Prevista_Chiusura] AS [Data_Prevista_Chiusura],
[VW_AMY_PRG_WCS_Lookup].[IdAnagrafica_Lavorazione] AS [IdAnagrafica_Lavorazione],
[VW_AMY_PRG_WCS_Lookup].[IdAnagrafica_Fatturazione] AS [IdAnagrafica_Fatturazione],
[VW_AMY_PRG_WCS_Lookup].[IdMezzo_Pervenuto] AS [IdMezzo_Pervenuto],
[VW_AMY_PRG_WCS_Lookup].[IdStato] AS [IdStato],
[VW_AMY_PRG_WCS_Lookup].[Oggetto] …Run Code Online (Sandbox Code Playgroud) 我有一个工厂类和CreateInstance方法
CreateInstance(EntityModel.TipoEntitaTipoParametroEntita tipoParametroEntita, IParametroEntitaMultiValoreDataSourceProvider parametroEntitaMultiValoreDataSourceProvider)
Run Code Online (Sandbox Code Playgroud)
工厂可以根据值来实例化两个不同的子类型 tipoParametroEntita.TipoCampo.IdTipoCampo
要点是CreateInstance(parametroEntitaMultiValoreDataSourceProvider)的第二个参数仅用于创建实例,TipoEntitaTipoParametroEntitaMultiValore
而不用于创建实例TipoEntitaTipoParametroEntitaSingoloValore
public class TipoEntitaTipoParametroEntitaFactory : ITipoEntitaTipoParametroEntitaFactory
{
/// <summary>
/// Creates an instance of TipoEntitaTipoParametroEntitaSingoloValore or TipoEntitaTipoParametroEntitaMultiValore
/// </summary>
public TipoEntitaTipoParametroEntita CreateInstance(EntityModel.TipoEntitaTipoParametroEntita tipoParametroEntita, IParametroEntitaMultiValoreDataSourceProvider parametroEntitaMultiValoreDataSourceProvider)
{
if (tipoParametroEntita.TipoCampo.IdTipoCampo == (int)EntityModel.Enum.TipoCampo.CampoLibero ||
tipoParametroEntita.TipoCampo.IdTipoCampo == (int)EntityModel.Enum.TipoCampo.CampoLiberoMultiLinea)
{
return new TipoEntitaTipoParametroEntitaSingoloValore(tipoParametroEntita);
}
if (tipoParametroEntita.TipoCampo.IdTipoCampo ==
(int)EntityModel.Enum.TipoCampo.DropdownListQueryDataSource ||
tipoParametroEntita.TipoCampo.IdTipoCampo ==
(int)EntityModel.Enum.TipoCampo.DropdownListTableDataSource)
{
return new TipoEntitaTipoParametroEntitaMultiValore(tipoParametroEntita,
parametroEntitaMultiValoreDataSourceProvider);
}
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
我对这种采用的模式表示怀疑,因为我总是需要传递一个实例,IParametroEntitaMultiValoreDataSourceProvider即使它不是必需的,而且读取方法签名的人可能会认为创建任何类型TipoEntitaTipoParametroEntita的实例IParametroEntitaMultiValoreDataSourceProvider都是必需的.
什么是更好的方法?两个不同的工厂?只有一个工厂和两个CreateInstance(一个返回TipoEntitaTipoParametroEntitaSingoloValore …
我正在尝试在 Visual Studio 2019 和 WLS2 中调试 .net core 控制台应用程序。控制台应用程序在启动时需要命令行参数。
这是我的launchSettings.json
{
"profiles": {
"ConsoleApp": {
"commandName": "Project",
"commandLineArgs": "--s",
},
"WSL 2": {
"commandName": "WSL2",
"commandLineArgs": "--s",
"distributionName": ""
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用“ConsoleApp”配置文件启动调试会话,应用程序控制台按预期获取参数“--s”,但使用“WSL 2”配置文件在 WSL 中执行调试时,我收到以下消息:
Unknown option: --s
.NET Core SDK (3.1.404)
Usage: dotnet [runtime-options] [path-to-application] [arguments]
Run Code Online (Sandbox Code Playgroud) 我建立了我在IIS 7中托管的WCFDataService,我将使用Reflection Provider作为数据源提供者.我的示例工作,如果我将实体类型定义保持在我定义服务的同一个程序集中,但是如果我将实体类型移动到另一个引用的程序集并且出现以下错误则不起作用
"服务器遇到处理请求的错误.异常消息是'在数据上下文类型'EntityContainer',有一个顶级IQueryable属性'Cats',其元素类型不是实体类型"
服务
public class WcfDataService1 : DataService<EntityContainer>
{
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("Cats", EntitySetRights.AllRead);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
}
}
Run Code Online (Sandbox Code Playgroud)
实体容器
public class EntityContainer
{
public IQueryable<Cat> Cats
{
get
{
var s = new List<Cat>();
var c1 = new Cat {Id = 1, Name = "Fufi"};
var c2 = new Cat {Id = 1, Name = "Felix"};
s.Add(c1);
s.Add(c2);
return s.AsQueryable();
}
}
}
Run Code Online (Sandbox Code Playgroud)
实体类型
[DataServiceKey("Id")]
public class Cat
{
public int Id { get; …Run Code Online (Sandbox Code Playgroud) EF 核心 2.2
有这个界面:
public interface INotPersistingProperties
{
string MyNotPersistingPropertyA { get; set; }
string MyNotPersistingPropertyB { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
以及许多实现该接口的实体
public class MyEntity : INotPersistingProperties
{
public int Id { get; set; }
public string MyNotPersistingPropertyA { get; set; }
public string MyNotPersistingPropertyB { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
对于所有实现 INotPersistingProperties 的实体,是否有机会自动忽略这些属性(使用 Fluent API)?
Convert.ChangeType("1", typeof(bool)) 返回运行时错误
有什么方法可以覆盖此行为?
我想要Convert.ChangeType("1", typeof(bool)) return真正的
Convert.ChangeType("0", typeof(bool))回报false
更新
阅读评论和答案也许我还不够清楚
假设有一个字典,<object,Type>其中type是目标类型
foreach (var element in dictionary)
{
object convVal = Convert.ChangeType(element.Key, element.Value);
}
Run Code Online (Sandbox Code Playgroud)
当element.Key是"1"和elemen.Value是bool我想获得true
任何人都可以给我任何建议以实施类似行为
至少比这更好的一点是:
public static class Convert
{
public static object ChangeType(object val, Type type)
{
if (val is string && type == typeof(bool))
{
switch (((string)val).Trim().ToUpper())
{
case "TRUE":
case "YES":
case "1":
case "-1":
return true;
default:
return false; …Run Code Online (Sandbox Code Playgroud)