在C#中,
有没有办法将自动属性转换为具有指定默认值的延迟加载自动属性?
基本上,我试图扭转这个......
private string _SomeVariable
public string SomeVariable
{
get
{
if(_SomeVariable == null)
{
_SomeVariable = SomeClass.IOnlyWantToCallYouOnce();
}
return _SomeVariable;
}
}
Run Code Online (Sandbox Code Playgroud)
到不同的东西,我可以指定默认值,它自动处理其余的...
[SetUsing(SomeClass.IOnlyWantToCallYouOnce())]
public string SomeVariable {get; private set;}
Run Code Online (Sandbox Code Playgroud) 我们已经采用了实体框架,我们发现当多个人在他们各自的源控制分支中进行单独的更改时,当它们在合并中聚集在一起时会发生大量冲突,导致模型文件损坏.
我们倾向于强制对文件进行独占检查,但我想避免这种情况.
我的问题是......
是否有更好的比较工具可以更好地处理这个问题,还是我们可以采取另一种方法?
寻找可能的事情.
新更新: 对于遇到此问题的人,它基于旧的EF.我建议在EDMX上使用DbContext.这里有很多关于它的信息.数据库优先或代码优先的简单性远远超过了我认为设计师的损失.
更新: 我们通过强制对文件进行独占更改来解决此问题.通过添加此过程,我们完全消除了任何问题.虽然这不是理想的解决方案,但它是最可靠和最容易实施的.
我在Windows上的Git Bash中创建了几个bash别名,从bash shell启动可执行文件.
我遇到的问题是,似乎bash在它再次开始响应输入之前等待退出代码,因为一旦我关闭它启动的应用程序,它就会再次开始执行命令.
是否有一个开关或我可以包含在别名中的东西,以便bash不等待退出代码?
我在寻找像这样的东西......
alias np=notepad.exe --exit
Run Code Online (Sandbox Code Playgroud) 我有一个ASP.NET转发器,它显示了一个带有删除LinkButton的项目列表.
我想设置Delete LinkButtons以显示JQuery对话框以进行确认.如果单击"确定"按钮,我想进行回发.
显而易见的问题是转发器中的每个LinkButton都有自己的ID,我不想复制对话框的所有javascript.
建议?
在Windows上使用Git Bash,如果我创建一个bash脚本,我在哪里放置它以便我可以从bash shell访问它?
基本上,我想创建一个bash shell脚本,用文件等做一些事情.
我想用一些参数从bash内部调用函数,然后脚本将完成它的工作.
我对这个环境完全陌生,所以我对bash的了解非常有限.
提前致谢.
现在有许多Fluent实现可以与Lambdas一起完成非常整洁的工作.我想把我的大脑包裹起来,这样我就可以开始创造一些这样的东西,但我还没有找到一个我的大脑能够理解的解释.
考虑这个简单的Person Validator示例
public class PersonValidator : IValidator<Person>
{
public PersonValidator()
{
AddRule(p => p.FirstName).CannotBeNull().CannotBeBlank();
AddRule(p => p.LastName).CannotBeNull().CannotBeBlank();
}
public List<ValidationResult> Validate(Person p)
{
// pseudo...
apply all rules specified in constructor, return results
}
}
Run Code Online (Sandbox Code Playgroud)
我已经成功地使用我的Validator上的方法来完成所有这些工作的一部分......
public ValidationResult<T,TProp> AddRule<T,TProp>(Func<T,TProp> property)
{
... not sure what to do here. This method gives me the ability to use the lambda
... for specifying which properties i want to validate
}
Run Code Online (Sandbox Code Playgroud)
然后,我可以创建扩展IValidator的Extension方法,以实现CannotBeNull和CannotBeEmpty的目的.
所以我似乎有问题的上半部分和后半部分,但我不确定如何将它们组合在一起.
寻找有意义的解释...我想"得到它".:)
假设这些对象......
class MyClass
{
int ID {get;set;}
string Name {get;set;}
List<MyOtherClass> Things {get;set;}
}
class MyOtherClass
{
int ID {get;set;}
string Value {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
如何使用下面的投影执行LINQ to Entities Query,它会给我一个List?这与IEnumerable工作正常(假设MyClass.Things是IEnumerable,但我需要使用List)
MyClass myClass = (from MyClassTable mct in this.Context.MyClassTableSet
select new MyClass
{
ID = mct.ID,
Name = mct.Name,
Things = (from MyOtherClass moc in mct.Stuff
where moc.IsActive
select new MyOtherClass
{
ID = moc.ID,
Value = moc.Value
}).AsEnumerable()
}).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助!
在ASP.NET核心标识中添加声明很简单,但我无法找到如何添加基于临时会话的声明.
我的用例是,具有自己的自定义声明的登录用户需要定期添加新声明,但仅限于当前会话,而不是持久保存到数据库.关闭浏览器或退出后,临时声明应该消失.
这是为了满足一种机制,该机制临时更改用户所属的组织,以便在我正在迁移到asp.net Core的应用程序中进行模拟.
我在这里找到了很多关于GenerateUserIdentityAsync在以前版本的Identity中实现这一点的建议,但在新版本中似乎没有.
c# asp.net asp.net-mvc asp.net-identity asp.net-core-identity
是否可以在全局级别而不是按查询的基础上输出实体框架生成的SQL?我希望把它全部丢弃,以便我可以查看它.
如果这不可能,我如何查看为更新和插入生成的SQL?
假设我有这些简化的EF生成实体......
public class PurchaseOrder
{
public int POID {get;set;}
public int OrderID {get;set;}
public int VendorID {get;set;}
public IEnumerable<Order> Orders {get;set;}
}
public class Order
{
public int OrderID {get;set;}
public decimal Price {get;set;}
public IEnumerable<Item> Items {get;set;}
}
public class Item
{
public int OrderID {get; set;}
public string SKU {get;set;}
public int VendorID {get;set;}
public Order Order {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
商业逻辑:
订单可以有多个PO,一个用于订单上的每个不同供应商(供应商在物料级别确定).
我如何选择性地包括儿童实体?
查询PO时,我想自动为订单和项目添加子项目.
我完成了这个,使用Include()...
Context.PurchaseOrders.Include("Orders.Items");
Run Code Online (Sandbox Code Playgroud)
这是它的工作并拉回相关实体,但是,我只想包含其VendorID与PurchaseOrder实体的VendorID匹配的Item实体.
对于传统的SQL,我只是在JOIN条件中包含它,但EF在内部构建它们.
我可以使用什么LINQ魔术告诉EF应用条件,而无需在实体之间手动创建JOIN?