我将这个Entity类与Entity Framework 5 Code First一起使用:
public class Survey
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string SurveyName { get; set; }
[Required]
public int ClientID { get; set; }
[ForeignKey("ClientID")]
public virtual Client Client { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在我的Controller的Create方法中,我这样做:
Survey entity = new Survey()
{
SurveyName = "Test Name",
ClientID = 4
};
db.Surveys.Add(entity);
db.SaveChanges();
Client c1 = entity.Client; //Why is this null?
Client c2 = db.Clients.Find(entity.ClientID); //But this isn't?
string s2 = c2.ClientName;
string s1 …
Run Code Online (Sandbox Code Playgroud) 我有2个课程:客户和调查.
每个客户可以进行多次调查 - 但只有一次默认调查.
我已经定义了这样的类:
public class Client
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string ClientName { get; set; }
public Nullable<int> DefaultSurveyID { get; set; }
[ForeignKey("DefaultSurveyID")]
public virtual Survey DefaultSurvey { get; set; }
public virtual ICollection<Survey> Surveys { get; set; }
}
public class Survey
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string SurveyName { get; set; }
[Required]
public int ClientID { get; set; }
[ForeignKey("ClientID")]
public virtual Client …
Run Code Online (Sandbox Code Playgroud) AND AdditionalFields = ''
,这两个结果仍然返回我似乎有空字符串,其长度为NULL,或NULL值等于空字符串.这是一个新的数据类型吗?!
编辑: 新数据类型 - 此处称为"Numpty"
编辑2 将数据插入临时表将Numpties转换为NULLS.(这个sql的结果是10)
CREATE TABLE #temp(ID uniqueidentifier , Value varchar(max))
INSERT INTO #temp
SELECT top 10 g.ID, g.AdditionalFields
FROM grants g
WHERE g.AdditionalFields IS NOT NULL AND LEN(g.AdditionalFields) IS NULL
SELECT COUNT(*) FROM #temp WHERE Value is null
DROP TABLE #temp
Run Code Online (Sandbox Code Playgroud)
编辑3 我可以通过运行更新来修复数据:
UPDATE Grants SET AdditionalFields = NULL
WHERE AdditionalFields IS NOT NULL AND LEN(AdditionalFields) …
Run Code Online (Sandbox Code Playgroud) 我使用Visual Studio 2015 RC创建了一个Ionic(Apache Cordova)应用程序.我在自己的解决方案文件中创建了它,我可以使用Ripple运行它.
现在我想将文件移动到与我的服务器应用程序相同的文件夹中,因此我复制了项目文件夹并将项目添加到另一个解决方案中.如果我现在尝试使用Ripple运行项目,我会收到此错误:
无法获得Ripple会话信息.例外:无法连接到远程服务器.请关闭所有Chrome实例,然后重试.
如何让Ripple再次运行?
ripple cordova visual-studio-cordova visual-studio-2015 ionic
在我的网站中,我希望在将任何上传的文件保存到我的数据库之前对其进行病毒检查.因此,我将文件保存到本地目录,然后从我的C#程序中启动命令行扫描程序进程.这是我使用的代码:
string pathToScannerProgram = Path.Combine(virusCheckFolder, "scan.exe");
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = pathToScannerProgram;
startInfo.Arguments = String.Format("\"{0}\" /FAM /DAM", fileToScanPath);
startInfo.RedirectStandardOutput = true;
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.UseShellExecute = false;
using (Process process = new Process())
{
process.StartInfo = startInfo;
process.Start();
string output = process.StandardOutput.ReadToEnd();
string errorLevel = Environment.GetEnvironmentVariable("ERRORLEVEL");
process.WaitForExit();
}
Run Code Online (Sandbox Code Playgroud)
我的问题是Environment.GetEnvironmentVariable("ERRORLEVEL")总是返回null.它应该返回一个数字.那么如何在我的C#程序中通过命令行扫描程序设置"ERRORLEVEL"?
我正在尝试将使用LIKE关键字的搜索查询与通配符进行参数化.原来的sql有这样的动态sql:
"AND JOB_POSTCODE LIKE '" + isPostCode + "%' "
Run Code Online (Sandbox Code Playgroud)
所以我试过这个,但是我得到了一个FormatException:
"AND JOB_POSTCODE LIKE @postcode + '%' "
Run Code Online (Sandbox Code Playgroud)
编辑:我想FormatException不会来自Sql Server CE,所以根据要求,这是我在C#代码中设置参数的方法.该参数在代码中设置如下:
command.Parameters.Add("@postcode", SqlDbType.NVarChar).Value = isPostCode;
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
"AND JOB_POSTCODE LIKE @postcode"
Run Code Online (Sandbox Code Playgroud)
同
command.Parameters.Add("@postcode", SqlDbType.NVarChar).Value = isPostCode + "%";
Run Code Online (Sandbox Code Playgroud)
但这不会返回任何结果.谁能建议如何在这个搜索sql中使用参数?
我是否必须这样做以确保正确处理MemoryStream?
using (MemoryStream stream = new MemoryStream(bytes))
using (XmlReader reader = XmlReader.Create(stream))
{
return new XmlDocument().Load(reader);
}
Run Code Online (Sandbox Code Playgroud)
或者可以内联MemoryStream以使其超出范围?像这样?
using (XmlReader reader = XmlReader.Create(new MemoryStream(bytes)))
{
return new XmlDocument().Load(reader);
}
Run Code Online (Sandbox Code Playgroud) 我使用table-per-hierarchy继承创建了一个包含3个类的模型,并使用2个自引用层次结构表的外键创建了一个模型.
我有一个BaseProperty
具有自引用键CloneID
和导航属性的类Clone
:
public class BaseProperty
{
public int ID {get; set; }
public int? CloneID {get; set; }
public BaseProperty Clone {get; set; }
//If I add this code, when I use Add-Migration -
//Sequence contains no elements error
//public int? TriggeredCloneID {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
我有一个Property
继承BaseProperty
并具有外键BlockID
和Block
导航属性的类.
public class Property : BaseProperty
{
public int? BlockID { get; set; }
public Block { get; set; }
} …
Run Code Online (Sandbox Code Playgroud) 我正在尝试按照拍照并获取 Cordova Camera Plugin 的FileEntry对象示例.我在Visual Studio 2017中使用Cordova Simulate通过选择"在浏览器中模拟"来测试该示例
拍摄照片并在模拟器中显示图像,使用与imageUrl
此代码段中传递给Cordova Files插件相同的图像:
function cameraSuccess(imageUri) {
window.resolveLocalFileSystemURL(imageUri, function () {
console.log('success')
}, function (error) {
console.log(error.message);
});
return imageUri;
}
Run Code Online (Sandbox Code Playgroud)
但是,对resolveLocalFileSystemURL的调用失败,并显示以下错误:
提供给API的URI格式不正确,或者生成的数据URL超出了数据URL的URL长度限制.
为了让这个工作,我需要做什么?
编辑 我在插件文档的Chrome Quirks部分找到了此说明
resolveLocalFileSystemURL方法要求入站URL具有文件系统前缀.例如,resolveLocalFileSystemURL的url参数应该是文件filesystem:file:///persistent/somefile.txt,而不是Android中的表单file:///persistent/somefile.txt.
所以我将代码更改为:
if (device.isVirtual) {
if (!window.isFilePluginReadyRaised) {
//added to check another potential Chrome quirk
//the alert wasn't never shown so I don't think it's an issue
alert('!window.isFilePluginReadyRaised');
}
imageUri= 'filesystem:' + imageUri;
}
window.resolveLocalFileSystemURL(imageUri, function () {
console.log('success');
}, function …
Run Code Online (Sandbox Code Playgroud) cordova cordova-plugins visual-studio-2017 tools-for-apache-cordova
我们的代码随处可见一般情况.
通常它会将错误写入数据库中的日志表,并向用户显示一个MessageBox,表示请求的操作失败.如果存在数据库交互,则回滚事务.
我已经介绍了一个业务逻辑层和一个数据访问层来解开一些逻辑.在数据访问层中,我选择不捕获任何内容,并且还抛出ArgumentNullExceptions和ArgumentOutOfRangeExceptions,以便从堆栈传递的消息不会直接来自数据库.
在业务逻辑层我放了一个try catch.在catch中我回滚事务,进行日志记录和重新抛出.
在表示层中有另一个显示MessageBox的try catch.
我现在正在考虑捕获DataException和ArgumentException而不是Exception,我知道代码只访问数据库.
在代码访问Web服务的地方,我想我会创建自己的"WebServiceException",只要抛出HttpException,WebException或SoapException,就会在数据访问层中创建它.
所以现在,一般来说,我将捕获2或3个例外,目前我只捕获一般的例外,我觉得这对我来说似乎没问题.是否有人再次包装异常以将消息传递到表示层?
我想我应该向Main()添加一个try catch来捕获Exception,尝试记录它,显示"Application遇到错误"消息并退出应用程序.所以,我的问题是,有没有人在我的计划中看到任何漏洞?是否有任何明显的异常我应该捕捉或做这些几乎覆盖它(除了文件访问 - 我认为只有一个地方我们读写配置文件).
c# ×4
.net ×2
cordova ×2
sql-server ×2
command-line ×1
dispose ×1
idisposable ×1
ionic ×1
lazy-loading ×1
ripple ×1