如果有更好的方法来做到这一点,请告诉我,但这是我设想的方式.可以吗?
Customer是database/datacontext中的表.我想要的是查询该表并使用它构建一个新对象.
如果我要插入记录,我会做这样的事情:
Customer cust = new Customer(){ FirstName = "A", LastName = "B", Age = 31 }
db.Customers.InsertOnSubmit(cust);
db.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)
我想要做的是用查询结果实例化该对象.像这样的东西:
var query =
from a in db.Customers
where a.FirstName == "A"
select a;
Customer cust = new Customer(){ query };
Run Code Online (Sandbox Code Playgroud)
或者甚至是
Customer cust = new Customer(){
from a in db.Customers
where a.FistName == "A"
select a;
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以做到这一点?
我有一个存储过程使用链接服务器(ADSI)连接到活动目录.它接受一个字符串/ varchar guid,然后将用户的thumbnailPhoto属性从活动目录中返回.我试图从C#代码调用此过程,但它一直返回null.我试图确保传递的guid是正确的,所以从调试,我抓住guid被传递到参数然后尝试使用它来管理工作室中的sproc.结果很好,但是当我从我的应用程序中执行它时,我得到null.这是代码:
存储过程:
ALTER PROC [dbo].[sp_GetPhotoFromADSI]
@GUID varchar(100)
AS
SET NOCOUNT ON
SET XACT_ABORT ON
BEGIN TRAN
DECLARE @sql NVARCHAR(600)
SET @sql=N'SELECT thumbnailPhoto FROM OPENQUERY(ADSI,
''SELECT thumbnailPhoto
FROM ''''LDAP://<GUID=' + @GUID + '>''''
WHERE objectCategory = ''''Person'''' AND objectClass = ''''user'''''')'
EXEC SP_EXECUTESQL @sql
COMMIT
Run Code Online (Sandbox Code Playgroud)
C#:
private byte[] GetUserPhotoByGuid(Guid userNativeGuid)
{
//dont judge me for not abstracting this
var connString = "connectionStringCrap;";
byte[] photo = null;
using (var conn = new SqlConnection(connString))
{
try
{
string guidString = userNativeGuid.ToString(); …Run Code Online (Sandbox Code Playgroud) 我偶尔碰到这个,我从来没有弄清楚如何修复它.我有一个与测试控制台项目在同一解决方案中的类库.当我在控制台项目中添加对库的引用并添加using语句时,intellisense可以很好地查看所有类.所以我写了一些代码并使用这些类.所有班级成员都表现得很好.然后我点击构建.我收到一个错误,无法找到库中的类(您是否缺少using指令或程序集引用?).现在突然间,我的所有对象都用红色加下划线,不再用颜色编码为类,而using语句也用红色加下划线.对库的引用仍在引用文件夹中.跆拳道
如果我删除引用并读取它,它是一样的.在我建立之前,它会看到一切都很好.

好的,我们有包含属性的类Ticket:
List<TaskComment> Comments;
Run Code Online (Sandbox Code Playgroud)
我设置了back属性,以便我可以做一些验证:
private List<TaskComment> _comments;
public List<TaskComment> Comment
{
get
{ //stuff }
internal set
{ //stuff }
}
Run Code Online (Sandbox Code Playgroud)
尽管将set设置为internal,但Add()方法仍然在程序集外部公开.但无论如何,我想要做的是设置评论对象的ticketId属性,因为它被添加到集合中.例如:
var ticket = new TaskTicket();
var comment = new TaskComment { //initializers }
ticket.Comments.Add(comment);
--inside the ticket:
public List<TaskComment> Comments
{
get{ //stuff }
set
{
((TaskComment)value).TicketId = this._ticketId;
}
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用.它告诉我它无法从TaskComment转换为MyLibrary.TaskComment.这对我来说真的没有任何意义.但除此之外,无论如何,这感觉不对.那么在将传入的值/对象添加到类的集合之前,我究竟该如何修改它?