我知道这不是最理想的解决方案,但我需要在我的一个EF Code First对象中添加一个自动递增字段.此列ID不是Id,这是一个guid.
反正我是在代码中定义自动递增字段,还是自己创建列并在DB中定义其自动递增工作?
我正在使用RazorEngine来呈现一些基本内容(一个非常粗糙的内容管理系统).
它很有用,直到我将任何@Html语法包含到标记中.
如果标记包含@html,我会收到以下错误:
无法编译模板.当前上下文中不存在名称"Html"
这是呈现标记的视图:
@Model Models.ContentPage
@{
ViewBag.Title = Model.MetaTitle;
Layout = "~/Views/Shared/Templates/_" + Model.Layout + "Layout.cshtml";
}
@Html.Raw(RazorEngine.Razor.Parse(Model.Markup, Model))
Run Code Online (Sandbox Code Playgroud)
我在Codeplex网站上看到了RazorEngine使用@Html(我知道那里的版本已经过时了,我通过nuget得到了我的版本).
对此的任何帮助都会很棒.
我正在使用Entityframework制作一个系统,现在已经超过12个单元,而且项目进展顺利,直到昨天,我现在遇到了一个奇怪的错误,我不知道它为什么会发生.我没有做任何与以前做过的事情不同的事情,但是一旦我加载了有问题的实体并尝试访问任何子实体,我就会收到以下错误:
The entity wrapper stored in the proxy does not reference the same proxy
Run Code Online (Sandbox Code Playgroud)
任何人都可以了解这实际意味着什么以及会导致什么?
显示我的代码并没有真正帮助.
这是代码的简化版本:
var quote = new QuoteHelper().GetById(orderId);
var updatedQuotes = new Provider().GetExportQuotes(quote.DeparturePoint.Id,quote.DestinationPoint);
Run Code Online (Sandbox Code Playgroud)
访问DeparturePoint和DestinationPoint时出现错误,但Quote正确加载,并且所有属性都已加载.
实体Quote看起来有点像这样:
public class Quote : BaseQuote, ICloneable
{
public Guid DeparturePointId { get; set; }
public virtual LocationPoint DeparturePoint{ get; set; }
public Guid DestinationPointId { get; set; }
public virtual LocationPoint DestinationPoint{ get; set; }
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的系统上的监视器获取友好名称.我正在使用C#.
我试过了Screen,只是给了我//./DisplayXX.我也曾尝试既Win32_DesktopMonitor和EnumDisplayDevices,他们都给予我的变化//./DisplayXXOR Generic Monitor,而我知道我的显示器名称SyncMaster和SM2333T.
现在,Windows知道这些监视器是什么,使用正确的名称在" 设备和打印机"窗口中显示它们,并在用于设置位置和分辨率的对话框中显示它们.
我在哪里可以从中获取这些名称?我已经查看了注册表,似乎无法找到它们,所以任何帮助都会很棒.
解决方案:
我遇到的问题是EnumDisplayDevices第二次调用时iDevNum再次调用id,这意味着我试图从错误的位置获取数据,然后将其替换为0,它完美地运行,请参阅下面的代码.
var device = new DISPLAY_DEVICE();
device.cb = Marshal.SizeOf(device);
try
{
for (uint id = 0; EnumDisplayDevices(null, id, ref device, 0); id++)
{
Console.WriteLine(String.Format("{0}, {1}, {2}, {3}, {4}, {5}", id, device.DeviceName, device.DeviceString, device.StateFlags, device.DeviceID, device.DeviceKey));
Console.WriteLine();
device.cb = Marshal.SizeOf(device);
EnumDisplayDevices(device.DeviceName, 0, ref device, 0);
Console.WriteLine(String.Format("{0}, {1}, {2}, {3}, {4}, {5}", id, device.DeviceName, …Run Code Online (Sandbox Code Playgroud) 我们开发了一个使用单一代码库的系统,包括四个带有管理网站的Visual Studio项目和面向客户的网站(每个系统都有自己的MS SQL数据库).
这一直很有效,因为所有新网站(包括管理员)都在SVN中引用相同的代码库项目,因此对代码库所做的任何更改都可供所有网站使用.
每个网站都有不同的母版页和不同的用户控件(.ascx),因此虽然网站背后的主要编码是相同的,但部分不同.
我们现在遇到的问题是,如果存在错误,功能更改或新功能,我们必须在所有站点中单独实施(对于管理员和客户站点).这开始让我们感到疯狂,也意味着我们在实施变更方面存在巨大的误差.
我曾考虑过使用svn:externals,但这会变得很乱.
可以选择从主网站和主管理系统进行分支,但合并以获取新代码是网站不完全相同的主要问题.
我认为一个很好的概述可以说每个站点的标记完全不同(除了管理站点,这只是一个主题更改)但代码库是相同的.
管理这个的最佳方法是什么,还是我们坚持做大量的复制和粘贴?
你想明确哪一点?
出现的问题是在页面JavaScript不同的情况下,HTML布局可以在网站之间完全不同.但页面的代码是相同的.
所以我需要'同步'文件和文件夹,例如在app_code中找到的文件和文件夹,但这里也存在问题.
站点1和站点2可以完全相同,只是一个不同的主题.站点3也有不同的主题,但它也有一些只有这个站点需要的定制代码,app_code中的一些代码也对站点1和站点2的行为有所不同
现在我可以通过分支轻松实现这一点,但是当合并到新分支时,如果存在代码差异,那么将会发生重大冲突.
合并也将成为一项大任务并且需要很长时间,因为我们只需要合并某些文件夹和文件,尽管您无法通过分支合并单个文件(这可能是错误的).
例如:
在root中有一个download.aspx,它返回一个流作为响应而不是一个页面,用于通过系统推送所有下载请求.
因此,站点1和站点2中的此页面是相同的,但在站点3中,它执行了额外的操作,这是其他站点不需要或不需要的.
我们不希望这个定制功能成为一个重载,因为我们不希望/需要它为其他网站,我们现在不能再合并这个文件,从主网站,它必须手动合并.
希望这能更好地解释我想要实现的目标.
基本站点结构
|- App_code
|- App_Themes
|- Bin
|- Content
| |- Flash
| |- Images
| |- Scripts
| |- Uploaded
|
|- Controls
| |- MasterPage
| | |-MasterPageControls
| |
| |- Navigation
| |- Search
| |- Templates
| | |- Control Templates
| | |- Page Templates
| |
| |- WebServices
| …Run Code Online (Sandbox Code Playgroud) 我目前有方法试图找出收到的obj是什么.它知道是在某个接口上,例如IService,但是我有代码查看它并试图告诉我它是例如Service1还是Service2.我目前有很多if(obj是thisObj)样式语句,什么是使这段代码漂亮的最佳解决方案?
这是我的确切样本:
public void DoSomething(IService service)
{
if (service is Service1)
{
//DO something
}
if (service is Service2)
{
//DO something else
}
}
Run Code Online (Sandbox Code Playgroud)
现在有两个不是太糟糕的事情,但我看到可能有20多个这些使用起来很糟糕.
有任何想法吗?
确定需要进一步的细节,这里是:
在这个方法之前,我有另一种方法,即接收一个xml doc,它将它们反序列化到接口IService中,所以我们有这样的东西:
private static void Method(InnerXml)
{
var messageObj = (IServiceTask)XmlSerialization.Deserialize(typeof(IServiceTask), InnerXml);
var service = GetService(messageObj);
service.PerformTask(xmlDoc);
}
private static IService GetService(IServiceTask messageObj)
{
var service = new IService ();
if (messageObj is Task1)
{
service = (SomeService)messageObj;
}
if (messageObj is Task2)
{
service = (SomeOtherService)messageObj;
}
return service ;
} …Run Code Online (Sandbox Code Playgroud) 我是一个懒惰的开发者吗?是否懒惰使用自动化工具,如代码生成器等?
现在,如果必须的话,我可以创建我需要的所有数据层和实体,但我选择使用CodeSmith来生成我的数据层和实体.我也使用Resharper,我会说它与MSDeploy战斗,在Visual Studio之后首先安装它.如果我不得不,我可以在没有它的情况下进行编码,但不愿意.
从我的观点来看,这两种工具都没有大脑,因为它们可以大幅提高产量.
但这是懒惰吗?我敢肯定那里有纯粹主义者会说你应该知道一切都应该被你知道所做的一切,但是如果你能读完代码并看看发生了什么就好了吗?
我是懒惰还是我只是在手里拿着所有牌?
我今天一直在尝试使用WP7应用程序并且已经打了一针墙.我喜欢在用户界面和主应用程序代码之间进行分离,但我已经碰壁了.
我已经成功实现了webclient请求并获得了结果,但由于调用是异步的,我不知道如何将此备份传递到UI级别.我似乎无法等待对完成或任何事情的回应.我一定做错了什么.
(这是我在我的网站上下载的xbox360Voice库:http://www.jamesstuddart.co.uk/Projects/ASP.Net/Xbox_Feeds/我将其作为测试移植到WP7)
这是后端代码片段:
internal const string BaseUrlFormat = "http://www.360voice.com/api/gamertag-profile.asp?tag={0}";
internal static string ResponseXml { get; set; }
internal static WebClient Client = new WebClient();
public static XboxGamer? GetGamer(string gamerTag)
{
var url = string.Format(BaseUrlFormat, gamerTag);
var response = GetResponse(url, null, null);
return SerializeResponse(response);
}
internal static XboxGamer? SerializeResponse(string response)
{
if (string.IsNullOrEmpty(response))
{
return null;
}
var tempGamer = new XboxGamer();
var gamer = (XboxGamer)SerializationMethods.Deserialize(tempGamer, response);
return gamer;
}
internal static string GetResponse(string url, string …Run Code Online (Sandbox Code Playgroud) 我正在开发一个针对 iOS 和 Android 的移动应用程序,我开始在 Windows 上的 Visual Studio 2022 中开发它,但由于 iOS 模拟器无法在 Windows 上运行的问题,已转移到 MacOS。
在 Mac (Ventura 13.0) 上,我安装了 XCode 14.1、Visual Studio For Mac 17.3.8 和 Jetbrains Rider 2022.2.3。我尝试使用 Rider,因为它对我来说在 Mac 上是最一致的体验,因为我通常在 Windows 上使用它。
我已经将应用程序开发到了我想在物理设备上测试它的程度,它在两个平台的模拟器上部署和运行都没有问题(通过 Rider 在 MacOS 上),并且在我的 Android 设备上部署和运行也是一样的。当尝试将其部署到物理 iPhone 14 (16.1) 时,出现了问题,我在部署目标下拉列表中选择了该设备,并且构建正常,但当它尝试将应用程序部署到设备时,出现以下错误。我已经检查过,该框架不在 XCode 中,并且我不知道从哪里获取它(如果这是真正的问题)。
应用程序从 Visual Studio for Mac 构建并部署到 iOS 设备不会出现任何问题,但对于 Android 则不然,与 Android 相比,必须使用不同的 IDE 进行物理 iOS 测试是一个问题。
事实上它可以很好地从 VS 部署到 iOs 设备,这让我认为这与配置文件有关,下面的错误是一个转移注意力的问题,因为我有一些人试图让这一切都工作在第一位。我在项目调试配置中注意到的一件事是,配置配置文件说Unable to parse application identifier from Info.plist我不知道应该在 Info.plist 中设置什么来添加它。签名身份设置为 …
我已经创建了一个通用存储库(使用EF 6.1.1),我在几个项目中使用它并且它运行良好.我已经实现了一个"软"删除功能,我们将数据标记为已删除,但实际上并未将其从数据库中删除.
然后,我可以过滤所有查询,因为所有实体都从具有IsDeleted属性的基本实体继承.这一切都很好,但它显然不会过滤掉任何"软删除"的子实体.
我不确定如何以通用方式执行此操作,因为我不希望将解决方案编码到每个respoitory中,这实际上违背了具有通用repo的原因.
这是我目前的通用回购的一个例子
public sealed class MyRepository<T> : IRepository<T> where T : BaseEntity
{
public String CurrentUser { get; set; }
private readonly MyObjectContext context;
private readonly Configuration configuration = ConfigurationManager.GetConfiguration();
private IDbSet<T> entities;
private IDbSet<T> Entities
{
get { return entities ?? (entities = context.Set<T>()); }
}
public MyRepository(MyObjectContext context, String userName = null)
{
this.context = context;
var providerManager = new DataProviderManager(configuration);
var dataProvider = (IDataProvider)providerManager.LoadDataProvider();
dataProvider.InitDatabase();
CurrentUser = userName;
}
public void Dispose()
{
//do …Run Code Online (Sandbox Code Playgroud) c# ×4
android ×1
asynchronous ×1
automation ×1
c#-4.0 ×1
code-first ×1
ios ×1
macos ×1
maui ×1
plugins ×1
razorengine ×1
rider ×1
windows ×1