SQL层:
我有一张桌子

实体框架层:
我有以下规则:所有要约,其中State为null,是优惠要约,State是真实的是已接受的要约,State is false是拒绝要约.此外,部分字段仅用于Outstanding,part - 仅用于Accepted等...我使用Database first方法,因此,我从DB更新EF模型并将Offer实体重命名为OfferBase并创建了3个子类:

它适用于添加/选择实体/记录.现在我想要从优秀到接受报价"移动"报价,所以,我需要设置Status = true(从Status为null)以获得适当的记录.但是如何通过实体框架来实现呢?如果我尝试选择未完成的报价作为接受报价,我会得到一个空参考(显然为什么)
// record with ID=1 exists, but State is null, so, EF can not find this record and offer will be null after the following string
var offer = (from i in _db.OfferBases.OfType<EFModels.OfferAccepted>() where i.ID == 1 select i).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
如果我尝试选择作为OfferBase实体,我会收到以下错误:
无法将"System.Data.Entity.DynamicProxies.OfferOutstanding_9DD3E4A5D716F158C6875FA0EDF5D0E52150A406416D4D641148F9AFE2B5A16A"类型的对象转换为"VTS.EFModels.OfferAccepted"类型.
var offerB = (from i in _db.OfferBases where i.ID == 1 select i).FirstOrDefault();
var offer = (EFModels.OfferAccepted)offerB;
Run Code Online (Sandbox Code Playgroud)
关于建筑的附加说明:
我有3种类型的Offer实体.有:AcceptOffer,DeclineOffer和OutstandingOffer.
AcceptOffer:
- 用户身份
- 使用ContactID
- 笔记
- FirstContactDate
- LastContactDate
- [...和5-10个独特的领域......]
DeclineOffer:
- 用户身份 …
我有一个WiX软件包,安装后应用程序启动:
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch MyProgram" />
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOX" Value="1" />
<Property Id="WixShellExecTarget" Value="[#MainExe]" />
<CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />
Run Code Online (Sandbox Code Playgroud)
我想将WiX包的语言传递给我的程序.可能吗?
我想像这样创建 INSTEAD OF 触发器:
CREATE TRIGGER [dbo].[DeleteCompany]
ON [dbo].[Company]
INSTEAD OF DELETE
AS
DECLARE @CompanyID int
SELECT @CompanyID = deleted.CompanyID FROM deleted
BEGIN TRAN
DELETE FROM Project WHERE CompanyID = @CompanyID
DELETE FROM CompanyPerson WHERE CompanyID = @CompanyID
UPDATE PersonCompany SET CompanyID = null WHERE CompanyID = @CompanyID
DELETE [Company]
FROM DELETED D
INNER JOIN [Company] T ON T.CompanyID = D.CompanyID
COMMIT TRAN
Run Code Online (Sandbox Code Playgroud)
因此,我可以确定,这些操作是一个原子操作。但这有意义还是 TRIGGER 总是在事务内执行?
另外,如果公司在另一个触发器中被删除,会发生什么情况,如下所示:
CREATE TRIGGER [dbo].[DeleteSecurityLevel]
ON [dbo].[SecurityLevel]
INSTEAD OF DELETE
AS
DECLARE @SecurityLevelID int
SELECT …Run Code Online (Sandbox Code Playgroud) 我找到了以下信用卡类型万事达卡的正则表达式
public static readonly string CreditMasterCard = @"^(5[1 - 5][0 - 9]{14})$";
Run Code Online (Sandbox Code Playgroud)
然后我写了下面的代码:
Regex regexMasterCard = new Regex(CommonLibrary.RegexCreditCardStrings.CreditMasterCard);
if (regexMasterCard.IsMatch(number)) return CommonLibrary.CreditCardType.mastercard;
Run Code Online (Sandbox Code Playgroud)
但是当我设置number ='5308171154251187'时就错了.正则表达式中有什么不正确?
我安装了Visual Studio 2017,它启动了Web应用程序的新浏览器实例.我想在当前打开的浏览器中启动它,没有任何新实例(当我停止调试时关闭).这个设置在哪里?
我使用 EF Core 并想添加预定义的数据。可以通过以下代码完成:
modelBuilder.Entity<UserPage>().HasData(new UserPage()
{
Name = "Homepage",
Editable = true,
Path = "path"
});
Run Code Online (Sandbox Code Playgroud)
这部分代码验证具有确切数据的 UserPage 对象是否存在,如果不存在,则创建它但我只想在记录Name = "Homepage"不存在时添加新记录,否则不存在。即使名称为“主页”的记录已经存在,上面的代码也会添加新记录,但Editable = false例如。我想验证它,我尝试:
if (UserPages.Where(p => p.Name.Equals("Homepage", StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault() == null)
{
modelBuilder.Entity<UserPage>().HasData(new UserPage()
{
Name = "Homepage",
Editable = true,
Path = "path"
});
}
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误:
在创建模型时尝试使用该模型。DbContext 实例不能以任何使用正在创建的模型的方式在 OnModelCreating 中使用。
我想将htmlAttributes作为参数传递给我的HtmlHelper,类似于在Html.ActionLink中创建的("linktext","Home",null,new {width ="100px"})如何传递这个新的{width ="100px"}我的方法
public static string SelectCategoryAdminWithAllItem(this HtmlHelper htmlHelper, string name, **???**)
{ }
Run Code Online (Sandbox Code Playgroud)
以及如何解析它?
谢谢
我想以格式MM/dd/yy在文本字段中显示日期.我将模型类描述为:
public class VacancyFormViewModel
{
public int? ID { get; set; }
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yy}")]
public DateTime SurgeryDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
当然,我可以用EditorFor而不是TextBoxFor:
@Html.EditorFor(p => p.SurgeryDate, new { @class = "form-control" })
Run Code Online (Sandbox Code Playgroud)
问题是css样式,客户想要应用bootstrap样式,这些样式被破坏:

如果我设置TextBoxFor而不是EditorFor我得到日期与时间:
@Html.TextBoxFor(p => p.SurgeryDate, new { @class = "form-control" })
Run Code Online (Sandbox Code Playgroud)

有什么方法可以解决我的问题?或者为时间或第三种方式应用样式EditorFor或显示样式TextBoxFor?
我有以下方法:
[Route("GetEditorialRequestsByCoordinates/{lat:min(-90):max(90)}/{lng:min(-180):max(180)}")]
[AutomapperExceptionApiFilterAttribute]
public HttpResponseMessage GetEditorialRequestsByCoordinates(double lat, double lng)
{
}
Run Code Online (Sandbox Code Playgroud)
我打电话时工作正常......
GET /v1/api/request/GetEditorialRequestsByCoordinates/48/2
Run Code Online (Sandbox Code Playgroud)
但是我希望像这样传递double值:
GET /v1/api/request/GetEditorialRequestsByCoordinates/48.999/2.777
Run Code Online (Sandbox Code Playgroud)
我收到了一个错误(找不到404).好像,它找不到合适的路线方法.我试图通过以下方式设置路线:
[Route("GetEditorialRequestsByCoordinates/{lat:double:min(-90):max(90)}/{lng:double:min(-180):max(180)}")]
Run Code Online (Sandbox Code Playgroud)
......但它也不起作用.
我该如何解决?
asp.net-mvc ×3
c# ×3
.net ×1
credit-card ×1
css ×1
ef-core-2.0 ×1
html-helper ×1
inheritance ×1
parameters ×1
razor ×1
regex ×1
seed ×1
sql-server ×1
triggers ×1
wix ×1