我有一个持久的计算列,它调用一个Scalar Valued Function.如您所知,此函数需要具有确定性才能保持该值.即使REPLACE函数以确定的方式运行(我不能认为它不是这样的情况),SQL Server似乎将其解释为不确定的.因此,我不能在功能中使用它.
我尝试做的是将一些非英语字符转换为英语.区分大小写在这里很重要.我想的字母转换??üÜ????öÖçÇ来gGuUsSiIoOcC分别.我可以通过使用以下内容来实现它(以"非确定性"的方式)
SET @ColumnValue = REPLACE(@ColumnValue COLLATE SQL_Latin1_General_CP1253_CS_AS, '?', 'i') --This character("?") is converted to "?" after collation so that I manually replace it
SET @ColumnValue = @ColumnValue COLLATE SQL_Latin1_General_CP1253_CS_AS --This line takes care of the other characters
Run Code Online (Sandbox Code Playgroud)
SQL Server将上面的代码解释为非确定性(demo)因为REPLACE和COLLATE(我认为它虽然是确定性的......).
我尝试的另一件事是在循环中使用带有STUFF的CHARINDEX,但由于需要区分大小写,因此需要使用排序规则.如果没有排序规则,SQL Server会将其视为确定性的.WHILE
我有什么选择?
我的代码是:
solveDb_userfileInconsistency solve = new solveDb_userfileInconsistency();
solve.setVisible(true);
try {
solve.solveIt();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
"solveIt"方法在30秒后返回,直到它返回,帧没有正确安装但在solveIt方法返回后,框架安装正确但我想要的是在进入solveIt方法之前,框架应该在屏幕上正确.是否有任何方法可以等待框架的安装,然后调用solveIt方法?
我有一个计算列,它使用标量值函数来评估它的值.我需要Persisted根据某些原因制作专栏并且要做到这一点,我需要使该功能具有确定性.我使用如下的查询来获取列类型:
SELECT
@dataType = DATA_TYPE
FROM
INFORMATION_SCHEMA.COLUMNS (NOLOCK)
WHERE
TABLE_SCHEMA = 'X' AND
TABLE_NAME = @TableName AND
COLUMN_NAME = @ColumnName
Run Code Online (Sandbox Code Playgroud)
当我尝试向WITH SCHEMABINDING函数添加子句(使其成为确定性)时,我收到以下错误:
无法模式绑定函数'X.MY_FUNCTION',因为它引用了系统对象'INFORMATION_SCHEMA.COLUMNS'.
如何以确定的方式获取列的类型?我查看了COLUMNPROPERTY和其他元数据函数,但找不到在不使用系统对象的情况下获取列类型的方法.
我使用projection通过Entity Framework Core将实体类映射到DTO。但是,投影会将ToList添加到子集合属性中,这会使查询速度大大降低。
公司实体:
public class Company
{
public Company()
{
Employees = new List<CompanyEmployee>();
}
public string Address { get; set; }
public virtual ICollection<CompanyEmployee> Employees { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
公司DTO:
public class CompanyDTO
{
public CompanyDTO()
{
CompanyEmployees = new List<EmployeeDTO>();
}
public string Address { get; set; }
public List<EmployeeDTO> CompanyEmployees { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
组态:
CreateMap<Company, CompanyDTO>()
.ForMember(c => c.CompanyEmployees, a => a.MapFrom(src => src.Employees));
CreateMap<CompanyEmployee, EmployeeDTO>();
Run Code Online (Sandbox Code Playgroud)
查询:
UnitOfWork.Repository<Company>()
.ProjectTo<CompanyDTO>(AutoMapper.Mapper.Configuration)
.Take(10)
.ToList(); …Run Code Online (Sandbox Code Playgroud) 我有一个bool数组和一个List:
bool[ ] searchable
List<T> allData
Run Code Online (Sandbox Code Playgroud)
我想做的是如下
allData.Where(c => searchable[0] && c[0].Contains("das") ||
searchable[1] && c[1].Contains("das") ||
searchable[2] && c[2].Contains("das")
...
);
Run Code Online (Sandbox Code Playgroud)
如何构建此LINQ函数?