项目使用Entity Framework dbfirst,出现了需要为很多客户安装一个应用程序的情况,因此会有很多数据库。如果开发人员将新表添加到数据库中,并且相应地从中获得了代码中的新模型 (edmx),是否有办法使用 EF 在客户数据库中自动创建这个缺失的表?也就是说,问题的本质是,使用 dbfirst 方法,是否有可能以某种方式基于模型创建缺失的表/字段?
Polyakov Sergey's questions
有一个表,其中设置以 XML 的形式存储在其中一个列中。我需要获取 value <Timeout type="Type3">19.09.2016 0:05:00</Timeout>,即仅分钟和秒。
这是整个 XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ObjectSerialization>
<!--Persistent object serialization-->
<Root>
<ComponentType type="Type0" />
<ConsiderDuration type="Type1">False</ConsiderDuration>
<ConsiderDurationEmptySlot type="Type1">False</ConsiderDurationEmptySlot>
<Enabled type="Type1">False</Enabled>
<ExternalRecordType type="Type2">Hard</ExternalRecordType>
<SiteEnabled type="Type1">False</SiteEnabled>
<Timeout type="Type3">19.09.2016 0:05:00</Timeout>
<UsedTypes>
<Type0 type="Kosta.PersistentObjects.SystemProperty.AppointmentProperty, Kosta.PersistentObjects" />
<Type2 type="Kosta.PersistentObjects.SystemProperty.ExternalRecordType, Kosta.PersistentObjects" />
<Type1 type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<Type3 type="System.DateTime, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</UsedTypes>
</Root>
对于初学者,我试图像这样在 Timeout 中获得价值
declare @info xml
set @info = Convert(xml,(select [Value] FROM [SystemPropertyStorage] where Name = 48),2)
select b.value('@Timeout', 'DateTime') as FullDate
from @info.nodes('/Root/Timeout') as a(b)
但回报NULL
这里有什么问题?
有必要从一个 HP 调用另一个并获得一个表作为结果。
我的行动:
declare @resultMoneyDms Table(Closing_Year int, Closing_Month int, mm_Amount int)
insert into @resultMoneyDms EXEC MoneyDmsInfo @EndDate = '2017-12-14T00:00:00', @Type = 'Billed'
抛出以下错误:
Procedure or function MoneyDmsInfo has too many arguments specified.
但是,可调用 HP 包含并使用所有传递的参数。
称为惠普:
ALTER PROCEDURE [dbo].[MoneyDmsInfo] @EndDate DateTime, @Type nvarchar(50)
AS
BEGIN
SET NOCOUNT ON;
IF @Type = 'Billed'
begin
declare @DmsBilled Table (Closing_Year int, Closing_Month int, mm_Amount int)
insert into @DmsBilled SELECT Closing_Year = DATEPART(YEAR, FO.DocDate), Closing_Month = DATEPART(MONTH, FO.DocDate), sum(FO.Amount) AS mm_Amount
FROM
[BillLine] AS B
INNER JOIN [FinOperation] AS FO ON
B.ID = FO.ID
LEFT JOIN [SaleContract] AS SC ON
FO.[AgreementID] = SC.ID
LEFT JOIN [FinSource] AS a3 ON
SC.[FinSourceID] = a3.ID
WHERE FO.DocDate BETWEEN DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AND @EndDate and a3.FinSourceType in (6,7)
group by DATEPART(YEAR, FO.DocDate), DATEPART(MONTH, FO.DocDate)
order by DATEPART(YEAR, FO.DocDate), DATEPART(MONTH, FO.DocDate)
select * from @DmsBilled
end
……
我尝试通过 MSSQL Studio 自动生成的代码调用此过程,该工作室提供以下内容。编码:
DECLARE @return_value int
EXEC @return_value = [dbo].[MoneyDmsInfo]
@EndDate = '2017-12-14T00:00:00',
@Type = 'Billed'
SELECT 'Return Value' = @return_value
但是在这里,当我尝试替换DECLARE @return_value int为 Table 类型时,会出现错误Must declare the scalar variable "@return_value".
底线是我需要从具有两个或更多参数的过程调用中获取 Table 类型。这里哪里可以出错?
有一个windows服务可以更新不同数据库中的信息,这些数据库可以位于不同的服务器上。这些数据库中的每一个都有一个应该写入日志的表。
应该在这个特定基地的日志表中为每个单独的基地编写日志。事实证明,我需要以某种方式,根据服务当前使用的基础,切换到这个基础和log4net.
是否支持此功能log4net,以及如何实现它?
有json:
{
"resourceType": "Parameters",
"parameter": [{
"name": "return",
"resource": {
"resourceType": "ValueSet",
"id": "f0ff2153-d170-49c0-9e8d-558ca41b9105",
"meta": {
"versionId": "1c0d1a38-e6bc-4a11-bb54-c624fc542898",
"lastUpdated": "2015-07-20T13:47:23.15+03:00"
},
"url": "urn:oid:1.2.643.2.69.1.1.1.7",
"version": "1",
"name": "Классификатор категорий льгот",
"status": "active",
"experimental": true,
"publisher": "bla",
"contact": [{
"telecom": [{
"system": "email",
"value": "support@bla.ru"
}]
}],
"compose": {
"import": [
"1.2.643.2.69.1.1.1.7_INNER"
]
},
"expansion": {
"timestamp": "07/27/2017 13:19:12",
"parameter": [{
"name": "total",
"valueString": "69"
}],
"contains": [{
"code": "10",
"display": "Инвалиды войны"
},
{
"code": "50",
"display": "Лица, награжденные знаком \"Жители блокадного Ленинграда\""
},
{
"code": "60",
"display": "Члены семей погибших инвалидов и участников ВОВ, ветеранов боевых действий"
},
{
"code": "61",
"display": "Члены семей погибших в ВОВ из числа л/с групп самозащиты объектов и команд ПВО, работников госпиталей Ленинграда"
},
{
"code": "62",
"display": "Члены семей погибших в/с, сотр. МВД, противопож. службы, погибших при исполнении обязанностей"
}...
问题是我只需要获取“显示”的所有值。但假设会出现不同格式的不同 json,因此需要提取某些值。只有密钥会被知道。
我试图做这样的事情:
public object ValueFromJSON(JObject json, string columnSourceName)
{
var v = json[columnSourceName].AsEnumerable();
}
那里columnSourceName有一个键叫display,但是什么也没有出来。把它扔进 eksepshn。如何通过key得到一个值数组?
有两个功能
<script type="text/javascript">
function updateGridView() {
LoadingPanel.Show();
$("form#form-grid-partial-view-refresh").ajaxSubmit({
url: '@Url.Action("GridViewPartial")',
asynk: false,
success: function(html) {
$('#partialViewDiv').html(html);
LoadingPanel.Hide();
}
});
}
function toExcel() {
updateGridView();
$("form#form-grid-partial-view-refresh").submit();
}
</script>
updateGridView执行正常搜索并输出结果
toExcel执行搜索显示结果并将其上传到 excel
调用该函数时,toExcel我希望首先通过 执行搜索updateGridView,然后将其上传到 Excel,但这并没有发生。事实证明,调用 urlupdateGridView并立即(不等待结果)调用提交以上传到 Excel。这是为什么 ?
您需要在特定块中找到特定输入的值。
$("div[data-type-diagnosis]")- 生成一个包含四个元素的数组,每个元素都有自己的嵌套和非嵌套元素。我需要在这 4 个包含的元素中的每一个中找到输入
var yy = $(".input-yy").val();
var mm = $(".input-mm").val();
var dd = $(".input-dd").val();
var hh = $(".input-hh").val();
var mi = $(".input-mi").val();
有这段代码:
var block = $("div[data-type-diagnosis]");
for (x = 0; x < block.length; x++) {
var yy = block[x].find(".input-yy").val();
var mm = block[x].find(".input-mm").val();
var dd = block[x].find(".input-dd").val();
var hh = block[x].find(".input-hh").val();
var mi = block[x].find(".input-mi").val();
}
这段代码发誓 find 不是一个函数。但是我如何才能在这四个块中的每一个中找到我需要的元素的值并将它们更改为我需要的值呢?
有这样一个枚举:
[Flags]
public enum TypeMoEnum : long
{
[EnumMember]
NotDefined = 0,
[EnumMember]
MO = 1,
[EnumMember]
Federal = 2,
[EnumMember]
Laboratory = 4,
[EnumMember]
CallCentre = 8,
[EnumMember]
ForRouteCard = 16
}
您需要获得确定所选成员是否存在的所有可能的数字组合ForRouteCard。如何实施?
UPD:条件 >= 16 将不起作用,因为 可以添加 enam 32.64 等的其他成员
有一组特定的字段应该根据正则表达式通过 Jquery 自动处理,但是这些字段有很多,并且出现了每个字段都以某种方式(例如,通过属性)传达这一点的想法正则表达式,但我还没有实现的想法。
我试过这样的东西,但没有用
@Html.TextBoxFor(m=>m.OrderOfPriority, new { datamask = "99", Value = 1, regex = "/^([1-9]|[12]\\d|3[0-8])$/" })
我想在 js 中以某种方式考虑这个正则表达式属性,但它没有成功。
帮助
有必要实现这样的行为,即当在字段中输入一个新字母时,经过 1 秒并执行某个方法。这需要一个定时器,但是当有快速的字母输入时(比如每秒3个字母),定时器会排队然后顺序执行。
要求有一个计时器,每输入一个新字母,将重新启动,但如果在 1 秒内没有输入字母。然后启动所需的方法。
这是我的代码:
var isTimerWork = false;
var timer = null;
$('#SearchString').on("keyup", function() {
if ($('#SearchString').val().length >= 2 && !IsExtSearch) {
if (timer != null)
clearTimeout(timer);
timer = setTimeout(isTimerWork = true, 1000);
while (!isTimerWork);
GetAutoCompleteData($('#SearchString').val());
}
在我的例子中,每次都会创建一个新的计时器。
您需要一个正则表达式,其中名称中的第一个字母必须大写并且其他大写字母必须被禁止,除非名称用连字符书写,然后允许第一个大写字母并且紧跟在连字符之后, 其余不允许。例如
德米特里 - 好的
德米特里 - 错误
德米特里 - 约瑟夫 - 好的
德米特里约瑟夫 - 错误
德米特里约瑟夫 - 错误
我有一个普通的,一开始只允许一个大的,但是通过连字符这个名字已经被错误地感知了。连字符之后是另一个大连字符。
我的表情
@"^[А-ЯЁ][а-яё\-]+\s([А-ЯЁ][а-яё\-]+)(\.|\s)\s*([А-ЯЁ][а-яё\-\.]+)$"
它使用 F&O 模板
当用户按住键盘按钮时是否可以覆盖输入字段的事件?
有一个带有 的文本字段id="char",您需要以某种方式禁止按住该键。但是重复字符的数量可以是任意的。
有一些行需要检查其中是否存在破折号“-”,如果存在此符号,则破折号后的下一个字母必须变大,但应保留以下其余字母像他们那样。这在 JS 中如何实现?
例如:
var str = "привет-стрАна"
应该成为"привет-СтрАна"
有一个现成的基地,什么都不能进入。我在一个项目中用它制作了一个 edmx。现在我需要添加一个计算年龄的计算字段。我将 Age 属性添加到实体,但异常崩溃。
实体代码:
public partial class Employee
{
public System.Guid ID { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public string Patronymic { get; set; }
public Nullable<System.DateTime> BirthDay { get; set; }
public Nullable<System.Guid> DepartmentID { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public int Age
{
get
{
if (BirthDay != null)
return (DateTime.Now - BirthDay.Value).Days / 365;
return 0;
}
set { }
}
}
皮卡本身
LINQ to Entities 不支持指定的类型成员“年龄”。仅支持初始值设定项、实体成员和实体导航属性。
如何在我的案例中添加计算字段?
有一个包含此类列的表(SqlCE)
[ID]
,[LastName]
,[FirstName]
,[Patronymic]
,[BirthDay]
,[DepartmentID]
我们需要添加另一个 int 类型的列(已计算),它将通过从列中计算来显示该人当天的年龄[BirthDay]。我怎样才能做到这一点 ?对两种方法感兴趣
- 通过对该表的 Sql 查询来完成(如果可能的话)
- 通过实体模型构造函数。
- 使用简单的 Sql 查询获取年数,该查询以某种方式将出生日期转换为年数
谢谢大家
有一个写入日志的文本文件,它的行看起来像
INFO 10-04 22:09:10 DataLayer 11 Log - userId = 1050.
您需要以某种方式将这些字符串分解为字符串数组的元素,以便该数组的每个元素都包含所需的数据片段。它看起来像这样:
["Info"]["10-04 22:09:10"]["DataLayer"]["11"]["Log"]["- userId = 1050."]其中 [] 是数组的每个元素,我尝试使用 Split(" ") - 它返回 61 个元素,其中一堆元素仅包含空格。而且我只需要突出显示单词,因为行中有很多空格,所以一切都变得复杂,并且按空格分隔是不正确的,因为有些普通短语的空格不作为列分隔符,但只是一个语音空间。如何解决?
有一个web项目,其中使用了log4net。日志保存在日志文件夹中的文本文档中。您需要创建一个显示日志的 aspx 页面。我以前没有使用过日志记录,我看到这个解决方案的方式是获取这个文本文件,解析它并将它插入到页面中。但这个解决方案对我来说似乎是错误的。在页面上显示日志还有其他选项吗?
有这样一段代码(取自 Schildt 并略有简化)。
using System;
using System.Threading;
class ThreadTest
{
object lk = new object();
public void Tick()
{
lock (lk)
{
for (int x = 0; x < 12; x++)
{
Console.WriteLine("tick");
Thread.Sleep(200);
Monitor.Pulse(lk);
Monitor.Wait(lk);
}
Monitor.PulseAll(lk);
}
}
public void Tock()
{
lock (lk)
{
for (int x = 0; x < 12; x++)
{
Console.WriteLine("tock");
Thread.Sleep(200);
Monitor.Pulse(lk);
Monitor.Wait(lk);
}
Monitor.PulseAll(lk);
}
}
}
class demo
{
static void Main()
{
ThreadTest thrTest = new ThreadTest();
Thread t1 = new Thread(thrTest.Tick); t1.Start();
Thread t2 = new Thread(thrTest.Tock); t2.Start();
}
}
此代码在不同线程中启动方法,并同步它们的工作,在控制台上显示 Tik 或 Tak。但我想,我怎样才能实现相同的功能,但使用asynс/await? 这是真的吗?
有这么一段代码
static void Main(string[] args)
{
try { Console.WriteLine(1); throw new Exception(); }
catch(DivideByZeroException) { Console.WriteLine(2); }
finally { Console.WriteLine(3); }
Console.WriteLine(4);
}
正如您所看到的,这里产生了一些异常,它没有被 block 捕获catch,理论上它应该工作finally——因为它总是工作,不管是否有异常。但出于某种原因,它没有为我在控制台上显示数字 3。为什么会这样?
有两个页面,一个包含用户列表,另一个在您单击特定用户旁边的列表中的编辑时打开。例如 users.aspx 和 edituser.aspx。有必要以某种方式拒绝对 edituser.aspx 的访问(例如,www.blabla.com/edituser.aspx),但要访问此页面,前提是我是从 users.aspx 页面访问它的。如何实施?