当我最初创建动态数据项目时,我告诉它公开外键,但现在我无法在外键的两个实体之间进行映射。当我在专注于关联时单击映射详细信息时,我收到以下消息:
映射不允许通过暴露的外键进行关联。
因此,我想禁用外键的暴露,但不确定如何在不从头开始创建新实体模型的情况下执行此操作。我还没有走得太远 - 所以这并不难,但我想必须有一个程序化的切换?
为什么将字符串转换/解析为 int 返回 0/零?
在调试时,使用断点,我可以看到“3”作为字符串值发布到浏览操作,但是当我如上所述转换为 int 时,该值将转换为 int 类型的 0 值。
//
// GET: /Event/Browse
public ActionResult Browse(string category)
{
int id = Convert.ToInt32(category);
// Retrieve Category and its Associated Events from database
var categoryModel = storeDB.Categories.Include("Events").Single(g => g.CategoryId == id);
return View(categoryModel);
}
Run Code Online (Sandbox Code Playgroud)
查看下图以更好地理解:

另一张图片 -categoryModel 在 LINQ 查询上获取 null。

我有一个项目,我使用查找表将两个表链接在一起:
Day WeatherLookUp Weather
--- ------------- -------
ID (PK) --> DayID |- ID (PK)
WeatherID <---| Description
Run Code Online (Sandbox Code Playgroud)
这允许我指定一天的多个天气条件。
我可以毫无问题地阅读此内容,但我的问题是当我在“日期”和“天气”表之间插入链接时。我创建了 WeatherLookup 表的两列作为表的复合主键,因此 EF 不允许我直接插入到 WeatherLookup 表中。
我原以为我只需要添加一个像这样的天气条目:
myDay.Weather.Add(new Weather { ID = 2 } );
Run Code Online (Sandbox Code Playgroud)
...但 EF 认为我正在尝试添加新的天气类型。
我确信我错过了一些明显的东西,但我不知道什么,我需要Attach()以某种方式使用吗?
C# 代码
public List<searchProducts_Result> GetProducts()
{
var nameParam = new ObjectParameter("numbers", typeof(int));
List<searchProducts_Result> listobjs = new List<searchProducts_Result>();
ObjectResult<searchProducts_Result> objResult = null;
searchProducts_Result outParam = new searchProducts_Result();
using (var db = new SPWebEntities())
{
objResult = db.searchProducts("asd", 2, 5, "15", nameParam);
if (nameParam.Value != null)
outParam.UserID = nameParam.Value.ToString();
else
outParam.UserID = "0";
listobjs.Add(outParam);
foreach (searchProducts_Result sr in objResult)
{
listobjs.Add(sr);
}
}
return listobjs;
}
Run Code Online (Sandbox Code Playgroud)
我的存储过程:
[searchProducts]
@productName varchar(50),
@pageStart int=2,
@pageEnd int=4,
@result varchar(MAX),
@numbers int output
as
select @numbers …Run Code Online (Sandbox Code Playgroud) c# stored-procedures entity-framework output-parameter entity-framework-4
我在我的项目中使用 Entity Framework v4.0 连接到数据库。我的情况是将 List 作为输入参数传递给存储过程,并在 SP 中进行一些操作并返回 List 作为 SP 结果。我知道表值参数是一种选择。但经过一番调查,我发现在实体框架中无法使用表值参数。有没有其他方法可以不使用表值参数通过实体框架来完成?
我正在运行以下查询和代码,我希望在 KeyValuePair 上返回两列。我看到返回的总行是正确的,但所有的键值对都是空的!
string query = @"Select id,name from persons";
var persons = context.Database.SqlQuery<KeyValuePair<string,string>>(query);
Run Code Online (Sandbox Code Playgroud)
我看到一个答案说我必须创建一个类才能得到结果;但我的问题是我不能在 KeyValuePair 上得到结果吗?或者我必须定义一个属性匹配的类?
我正在使用实体框架4从DB创建实体.
我有2个实体上下文连接到db.让我们说context1和context2
但是,当我执行以下步骤时,1.从context1获取数据2.从context2获取相同的数据行3.将相同的数据行更新为context1 4.从context2获取相同的数据行
在步骤3中更新后,context2不会更改.
我猜context2缓存了数据.每次都不从db获取数据.
怎么解决?
谢谢〜
我刚刚开始使用CTP4和Code-First.我有一个可能的约会网站的以下设置:
public class User
{
[Key]
public int Id { get; set; }
[Required]
public string LoginName { get; set; }
[Required]
public string Firstname { get; set; }
[Required]
public string Lastname { get; set; }
public string Street { get; set; }
[Required]
public string Zip { get; set; }
[Required]
public string City { get; set; }
[Required]
public bool Gender { get; set; }
[Required]
public int SoughtGender { get; set; }
[Required]
public string Password …Run Code Online (Sandbox Code Playgroud) 我有一个包含大量查找实体的实体模型.所有都只有ID和Name属性.
我不想构建大量的DAL类,只需要:
IList<Lookup1> lookup1List= ctx.Lookup1.ToList();
Run Code Online (Sandbox Code Playgroud)
和另一个类(或方法)
IList<Lookup2> lookup2List= ctx.Lookup2.ToList();
Run Code Online (Sandbox Code Playgroud)
和另一个
IList<Lookup3> lookup3List= ctx.Lookup3.ToList();
Run Code Online (Sandbox Code Playgroud)
我希望有一种通用的方法来使用他们都实现的接口来查询所有这些方法.就像是
IList<ILookupEntity> list = "SomeMethod"(Type lookupType);
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我正在从SubSonic迁移到EF4.在SubSonic模型中有一个名为Save的函数,如果模型的键是0,则完成插入,否则进行更新.
有没有办法像SubSonic一样制作通用的Save功能?对于使用扩展方法的例子?
c# ×6
.net ×2
asp.net-mvc ×1
code-first ×1
dbcontext ×1
dynamic-data ×1
insert ×1
linq ×1
lookup ×1
methods ×1
save ×1