我希望能够在使用POCO时将Windows Form与MongoDB一起使用,主要是因为在字符串文字中很容易从MongoDB获取值。我遇到的唯一问题是POCO将Windows窗体中的空白条目作为空白字符串(""),因此当使用InsertOneAsync()时,我会看到带有值的字段&# 34;&#34 ;.
这通常不可取,主要是因为:
下面是我将文档从Windows Form导入MongoDB的代码..我还有其他一些问题:
我为ZIP编写的代码转换了" null"到" 0"。我想改变这一点,因此当窗体表格输入为空白时它就不会进入该字段。
var person = new Person
{
lastName = textBox1.Text.ToUpper(),
firstName = textBox8.Text.ToUpper(),
address = new Address
{
streetAddress = textBox4.Text.ToUpper(),
city = textBox5.Text.ToUpper(),
state = comboBox1.Text.ToUpper(),
ZIP = Convert.ToInt32(string.IsNullOrEmpty(textBox7.Text) ? null : textBox7.Text)
}
};
var client = new MongoClient();
var database = client.GetDatabase("dataBase");
var col = database.GetCollection<Person>("addressBook");
await col.InsertOneAsync(person);
P.S。这是我在这里的第一个问题,所以如果我没有提供足够的信息,请告诉我。
答案 0 :(得分:0)
因此,经过一番小小的灵魂搜索,似乎POCO并不适合多场请求。
发出请求的最佳方式是使用BsonDocument泛型类型,然后将找到的文档转换为泛型类型&#34; person&#34;。示例代码发布在此处:
var doc = new BsonDocument(); // Creating a filter for me in BSON
var lastName = textBox1.Text;
if (lastName != "") // Is my string in the Windows Form empty?
doc.Add("lastName", lastName); // If not, add me to the filter.
var firstName = textBox8.Text;
if (firstName != "")
doc.Add("firstName", firstName);
如果字符串文字不为空,则将字段及其对应的值添加到将用作过滤器的BsonDocument。
var doc = await colBson.Find(filter).FirstOrDefaultAsync();
// Find me, but as a BSON document.
然后找到该文档作为BsonDocument。
var person = BsonSerializer.Deserialize<Person>(doc);
// Convert me into a <Person> generic type.
从这里你可以按照自己的意愿去做一个&#34; Person&#34;打字课。
如果我不清楚任何事情,请告诉我。