有人可以告诉我,如果有更好的方法document从使用官方C#驱动程序删除MongoDB 中的一个,而不是我以下 -
var query = Query.EQ("_id", a.Id);
database.GetCollection<Animal>("Animal").Remove(query);
Run Code Online (Sandbox Code Playgroud)
这段代码有效,但对我来说似乎太过分了.例如,"保存"命令需要一个实例并对其进行更新.我想要像 - Remove(item).
所以,我有一个使用这样的方法定义的存储库:
IQueryable<Customer> Customers{...}
Run Code Online (Sandbox Code Playgroud)
以及其他一种过滤客户的扩展方法,如下所示:
public static IQueryable<Customer> WithID(this IQueryable<Customer> customers, int ID){...}
Run Code Online (Sandbox Code Playgroud)
这很好,让我像这样使用存储库:
var c = repo.Customers().WithID(5).Single();
Run Code Online (Sandbox Code Playgroud)
但问题是,ReSharper在这个重要时刻搞砸了自动完成.当我输入
var c = repo.Customers().Wi
Run Code Online (Sandbox Code Playgroud)
我得到了很好的Intellisense向我展示了WithID(...)方法,但是当我向下游标并点击TAB时,它没有按预期获得WithID()方法,而是返回并更改已编写的代码并且该行最终看起来像:
var c = CustomerExtensions.WithID(repo.Customers())
Run Code Online (Sandbox Code Playgroud)
这当然让我不得不回去再输入它,这次IGNORE intellisense - 恕我直言,这绝不是一件好事:)
我通过进入选项并为Intellisense指定"Visual Studio"来确认这是一个ReSharper问题.我不想回到普通工作室!
任何人都可以帮助或建议解决方法吗?
所以followwing工作得很好,从字符串json给我一个Team对象:
var found = JsonConvert.DeserializeObject<Team>(json);
Run Code Online (Sandbox Code Playgroud)
但如果直到运行时我才知道类型怎么办?假设我有上面的字符串json,但我还有另一个字符串类型名称?例如,这不起作用:
var found = JsonConvert.DeserializeObject(json, Type.GetType("Team"));
Run Code Online (Sandbox Code Playgroud)
无法将"Newtonsoft.Json.Linq.JArray"类型的对象强制转换为...
我一直在评估Hudson,着眼于从CC.NET转换它.在CC.NET中,我收到了包含测试统计信息的电子邮件,例如测试运行次数,失败次数等等.它甚至以红色显示"此项目没有测试",这是一个很好的激励因素,对吗?
在哈德森有没有办法做到这一点?
我已经尝试过email-ext插件,因为我被告知它可以将测试输出和其他好东西放到电子邮件中,但我无法弄清楚"如何".
看起来我需要为"内容"添加一个令牌,但是我没有看到任何可用的令牌对我来说看起来像"测试结果":)或任何可以解析我提供路径的xml,或者这样的.
有没有人这样做,可以帮忙吗?谢谢!
我有一个像这样定义的类:
public class Location
{
public Location()
{
Meetings = new List<Meeting>();
}
public virtual int ID { get; private set; }
public virtual string Name { get; set; }
public virtual ICollection<Meeting> Meetings { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
而这个数据库表只是带有ID和Name属性的"位置".
其他一些表"会议"有一个外键回到此表.它是超出了我想在这个例子中与之合作的范围,但我认为这是造成PetaPoco失败...
我正在尝试使用PetaPoco将新位置插入数据库,如下所示:
public int AddLocation(string name)
{
var newLocation = new Location{Name = name};
var db = new PetaPoco.Database(_connectionString);
db.Insert("locations", "ID", newLocation);
return newLocation.ID;
}
Run Code Online (Sandbox Code Playgroud)
它会抛出这样的错误:
{"对象类型System.Collections.Generic.List`1 [[NHRepoTemplate.sampleUsage.sampleModel.Meeting,NHRepoTemplate,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]不存在映射到已知的托管提供者本机类型."}
在我看来,子集合的存在导致PetaPoco无法进行插入,但是......必须有一种方法告诉它"忽略"那个,对吧?
所以,我有一个具有普通属性的"Speaker"类,以及一个像这样的普通旧方法:
public string FullNameFirstLast()
{
return FirstName + " " + LastName;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Entity Framework Code First Magic Unicorn版,我收到此错误:
System.NotSupportedException:LINQ to Entities无法识别方法'System.String FullNameFirstLast()'方法,并且此方法无法转换为商店表达式.
这看起来很奇怪,因为它是一种方法,而不是属性,所以我想知道为什么EF会关心它...所以我试着告诉EF忽略它:
modelBuilder.Entity<Speaker>()
.Ignore(ignore => ignore.FullNameFirstLast())
;
Run Code Online (Sandbox Code Playgroud)
这没有用,因为现在我收到此错误消息:
System.InvalidOperationException:表达式'ignore => ignore.FullNameFirstLast()'不是有效的属性表达式.表达式应该表示一个属性:C#:'t => t.MyProperty'VB.Net:'Punction(t)t.MyProperty'.
我该怎么做呢?我假设我的模型对象上有EF方法,对吧?