我对实体框架比较陌生。
我创建了一个包含两个表的数据库:Accounts和Assignments。
Accounts有一个AccountId主键,用作表中的外键Properties。我真的很喜欢实体框架自动获取外键关系,并允许我将行Assignments作为每行的属性进行访问Accounts。
我继续创建了一个新的 View 对象,该对象返回所有列Accounts以及一些其他信息。但是,当我使用实体框架从 SQL 中的视图获取数据时,它不再自动引用表中的关联行Assignments。
如何使用实体框架的视图获得所需的行为
PostgreSQL 中可以创建带有参数的视图吗?
问题是,我们的后端服务中可能存在未经验证的 SQL 语法,这可能会导致内部服务器错误,所以我可能需要将每个查询转换为视图?
像这样的东西:
query := ` --
func Bla_ByType
SELECT id
, data
-
>>
'name'
FROM bla
WHERE data->>'type' = ` + escapeAndQuote(param1)
Run Code Online (Sandbox Code Playgroud)
上面的语法未被检测为错误,因为它只是一个字符串,正确的语法是:
query := ` -- func Bla_ByType
SELECT id
, data->>'name'
FROM bla
WHERE data->>'type' = ` + escapeAndQuote(param1)
Run Code Online (Sandbox Code Playgroud)
上面的例子只是一个简单的查询,其他的则更长,如下所示:
WITH t AS (
SELECT ...
FROM
WHERE param1
) SELECT ...
FROM ...
LEFT JOIN t
WHERE param2`
Run Code Online (Sandbox Code Playgroud)
除了阅读课程之外还有其他选择吗:
CREATE OR REPLACE VIEW v_bla_bytype AS
SELECT id
, data->>'name'
FROM bla
WHERE …Run Code Online (Sandbox Code Playgroud) 我正在尝试找出一种方法来计算 Oracle 视图中的列数。关于如何计算表中的列数有很多答案,但没有关于视图的答案。
数据库有很多很多视图,我必须对每个视图进行计数。以可以重复执行的查询形式找到解决方案是最有效的 - 手工计数在这里不起作用。
感谢您的任何帮助,您可以提供!
此查询单独运行:
SELECT
-- lots of columns
FROM
table1 t1
LEFT JOIN table2 t2
ON t2.[userid] = t1.[userid]
LEFT JOIN table3 t3
ON t1.[orderid] = t3.[orderid]
LEFT JOIN table4 t4
ON t4.[orderitemlicenseid] = t3.[orderitemlicenseid]
LEFT JOIN table5 t5
ON t1.[orderid] = t5.[orderid]
LEFT JOIN table6 t6
ON t5.[transactionid] = t6.[transactionid]
LEFT JOIN table7 t7
ON t7.[transactionid] = t5.[transactionid]
LEFT JOIN table8 t8
ON t8.[voucherid] = t7.[voucherid]
LEFT JOIN table9 t9
ON t8.[voucherid] = t9.[voucherid]
LEFT JOIN table10 t10
ON t10.[vouchergroupid] = …Run Code Online (Sandbox Code Playgroud) 可能重复:
重命名Oracle表或视图
我知道你可以用
ALTER TABLE oldName RENAME TO newName;
Run Code Online (Sandbox Code Playgroud)
重命名表,但"ALTER"不能用于重命名视图.
在Oracle中重命名视图的语法是什么(如果有任何区别,我使用的是11g)?
我希望我的mysql服务器删除数据库中的所有视图.我已经为存储过程创建了一个事件:
开始
DECLARE done INT DEFAULT FALSE;
DECLARE VIEW_NAME CHAR(255);
DECLARE VIEW_NAMES CURSOR FOR SELECT table_name FROM information_schema.views;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN VIEW_NAMES;
read_loop: LOOP
FETCH VIEW_NAMES INTO VIEW_NAME;
IF done THEN
LEAVE read_loop;
END IF;
DROP VIEW VIEW_NAME;
END LOOP;
CLOSE VIEW_NAMES;
Run Code Online (Sandbox Code Playgroud)
结束
但是,此过程会产生以下错误:
错误代码:1051.未知表'view_name'
我的猜测是我的fetch语句由于某种原因没有获取.所以我检查了select语句,它确实有一个结果集.任何有关如何解决错误或如何在mysql数据库中删除所有视图的想法?
在SQL Server 2008中,我有一个这样的视图:
CREATE VIEW products AS
SELECT a.ID, a.Name, b.ID as SubID, b.Name as SubName
FROM main_product as a
INNER JOIN sub_product as b on a.ID = b.mainID
Run Code Online (Sandbox Code Playgroud)
这是我的模特:
Public class Products
{
public int ID { get; set; }
public int Name { get; set; }
public int SubID { get; set; }
public int SubName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在我如何将MVC3的视图映射到SQL Server视图?
UPDATE
我试过这个:
public class PartialContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); …Run Code Online (Sandbox Code Playgroud) sql-server entity-framework sql-view ef-code-first ef-database-first
嗨试图在oracle中创建一个视图.但是我的代码中出现错误,我无法解决如何解决问题.目前我正在尝试创建一个显示管理者的视图,他们的名字和名字也是他们分配的诊所.诊所的PK和诊所地址的FK所有地址都存储在该表中(是的,我知道它是不标准,但这是我选择这样做的方式)所以我也想显示他们工作的诊所的地址细节
当然这包括两个WHERE语句,我不确定如何实现第一个是STAFFJOBNAME"MANAGER"的地方
第二个是ADDRESSNO在两个表上匹配的地方
CREATE VIEW MANAGER AS
SELECT STAFF.staffno,STAFF.staffFirstName,STAFF.staffLastName,CLINIC.clinicNo, CLINIC.addressNo
FROM STAFF,CLINIC
WHERE addressNo =
(
SELECT addressNo, addressStreet, addressCity, addressCounty, addressPostcode, addressTelephone,
FROM ADDRESS,
INNER JOIN CLINIC,
ON ADDRESS.addressNo = CLINIC.addressNo
) AND STAFF.staffJobName = 'MANAGER';
Run Code Online (Sandbox Code Playgroud)
我也有这个版本.所以我不确定哪一个更接近正确的一个.
CREATE VIEW MANAGER
(
AS
SELECT STAFF.staffno,STAFF.staffFirstName,STAFF.staffLastName,CLINIC.clinicNo, CLINIC.addressNo, ADDRESS.addressNo, ADDRESS.addressStreet, ADDRESS.addressCity, ADDRESS.addressCounty, ADDRESS.addressPostcode, ADDRESS.addressTelephone,
FROM ADDRESS, STAFF,
INNER JOIN CLINIC,
ON ADDRESS.addressNo = CLINIC.addressNo
);
Run Code Online (Sandbox Code Playgroud) 我正在开发一个Asp.Net MVC应用程序,其中我有一个包含五列的SQL视图,我有以下模型
public class InferredBid
{
public int Id { get; set; }
public string Market { get; set; }
public string Term { get; set; }
public string Bid { get; set; }
public string Offer { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
SQL视图
Create VIEW [dbo].[InferredBids]
AS
with numbered as
(
select id, product, grade, term, bid, offer, termid, row_number() OVER (Partition BY Product, Grade ORDER BY termid) i
from dbo.CanadianCrudes
)
select r1.i as Id, r1.product + '/' + …Run Code Online (Sandbox Code Playgroud) 我选择'WITH'子句:
with
alias1 as (select...),
alias2 as (select ... from alias1),
alias3 as (select col1, col2 ... from alias2)
select col1,col2 from alias3
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下方法创建视图:
create view ex_view as (
with
alias1 as (select...),
alias2 as (select ... from alias1),
alias3 as (select col1, col2 ... from alias2)
select col1,col2
from alias3
)
Run Code Online (Sandbox Code Playgroud)
当我尝试执行此create语句时,'不支持使用WITH子句'
如何基于我的select语句创建视图?
sql-view ×10
sql ×8
oracle ×4
mysql ×2
sql-server ×2
asp.net-mvc ×1
c# ×1
postgresql ×1
rename ×1